인프런, 객체 지향 프로그래밍 입문 - 5

StarSeeker·2023년 3월 10일
0

기능과 책임 분리

  • 기능은 여러 하위 기능으로 분해된다.
  • 암호변경
    - 변경 대상확인
    - 대상암호 변경
  • 분리한 기능을 누가 제공할 것인지 알맞게 배분하는 것!
  • 이렇게 객체지향을 설계한다.

    하지만 클래스가 커지고, 메서드가 커지면 절차 지향과 똑같은 문제가 발생한다.

  • 큰 클래스 -> 많은 필드를 많은 메서드가 공유
  • 큰 메서드 -> 많은 변수를 많은 코드가 공유
    여러 기능이 한 클래스/메서드에 섞여 있을 가능성이 있다.
  • 책임에 따라 알맞게 코드 분리가 필요하다.

    어떻게 적용할까?

  • 패턴 적용
  1. 전형적인 역할 분리 사용
    간단한 웹 -> 컨트롤러, 서비스, DAO
    Gof -> 팩토리, 빌더, 전략, 패턴 등등으로 분리할수 있다.
  2. 계산 분리
    만약 포인트를 계산하는 로직을 따로 PointCalculator 클래스로 만들어서 분리 시킨다.
  3. 연동 분리
    외부 연동(API 데이터를 가져 오는 것,등등)
    도 따로 클래스로 분리시킨다.
  4. 조건 분기는 추상화
    연속적인 if-else 는 추상화를 고민해 보자!

    의도가 잘 드러나는 이름을 사용해야 한다.
    RecommendService -> httpDataService

  • 역할을 분리하면 테스트가 용이해진다.
    그 역할에 대한 책임을 가진 클래스의 메서드만 테스트해보면 된다!

    결론

  1. 큰 기능을 작은 여러가지 역할로 분리하자
  2. 여러가지 작은 역할에 책임을 갖는 객체(클래스)를 만들자.
  3. 여러 객체의 조합으로 큰 기능을 구현한다.
  4. 각 기능의 테스트를 쉽게 할수 있으며 유지보수 측면에서도 유리하다.
profile
춤추듯 개발하고 싶은 사람

0개의 댓글