🦁 걸어봐 위엄 라잌어 라이옹/👀 주차별 과제

[대학교멋사🦁/OOD] 4. 기능과 책임 분리

우주수첩 2023. 5. 5. 00:08
728x90

 

1. 기능 분해

  • 하나의 기능은 여러가지의 하위 기능으로 분해할 수 있다.
  • 기능을 분류하고 각 객체에게 기능 구현의 책임을 제공한다.  
    • 분리한 하위 기능을 통해서 전체 기능을 구현하게 됨

 

 

2. 문제

  • 클래스나 메소드의 크기가 증가할 경우 절차지향에서 마주하였던 문제가 또 다시 발생
    • 큰 클래스 : 많은 필드를 많은 메소드가 공유
    • 큰 메소드 : 많은 변수를 많은 코드가 공요
    • 여러 기능이 한 클래스 및 메소드에 섞에 있을 가능성이 존재한다. 
      => 데이터를 공유하게 됨으로써 코드를 수정하기 어려움을 겪게 됨

 

그럼 어떻게 해야 할까?

  • 책임에 따라 알맞게 코드를 분리할 필요가 있다. 

 

 

3. 책임에 따른 클래스 분배 분리 방법

  • 패턴적용
    • 전형적인 역할 분리
    • ex) 웹 : 컨트롤러, 서비스, DAO / 복잡한 도메인 : 엔티티, 밸류, 레포지토리, 도메인 서비스 
  • 계산 기능 분리
    • 계산이 필요한 코드는 분리한 클래스에서의 계산 기능을 사용하도록!
  • 외부 연동 분리
    • 네트워크, 메시징, 파일 등 외부와의 연동을 수행하는 코드를 따로 분리
  • 조건별 분기 추상화
    • if-else 블록을 추상화 : 각 메소드에서 사용하는 조건문의 형태가 유사하다면 이를 추상화 하도록 한다. 

 

 

# 기능 분류 시 주의점

  •  의도가 잘 드러나는 이름을 사용하는 것을 추천

 

 

#기능 분리의 장점

  • 역할분리가 잘 수행되면 프로그램의 테스트 또한 용이해진다. 
  • ex) 다른 객체들에 상관없이 한 기능을 수행할 수 있도록 함 => 특정 한 기능만을 테스팅 하기에 용이하다.

 

 

728x90