TDD, 클린 코드 with Java 18기: 수강신청(도메인모델)

yshjft·2024년 5월 24일
0

수강신청(도메인모델)

리뷰 내용

🤔 리뷰 링크

2단계 - 수강신청(도메인 모델) #463


🤔 문제 해결에 정답은 없지만 간단한 방식이 좋지 않을까?

유료 강의와 무료 강의의 구분을 추상 클래스 SessionType를 사용하였는데 이게 괜찮은 방법일까요?
혹시 더 좋은 방법이나 개선할 부분 알려주시면 반영하겠습니다.

리뷰어

  • 같은 문제를 해결할 수 있는 방법은 다양하다.
  • 다만 SessionType에 책임을 좀 더 부여하여 간단히 문제를 해결할 수 있을거 같다.

  • 문제 해결방법에는 다양한 방법이 있지만 최대한 간단한 방법으로 문제를 해결할 수 있도록 노력해야겠습니다.

🤔 상속보다는 합성을 사용하라

리뷰어

  • 상속보다는 합성 쪽으로 고려하면 좋을거 같다.

상속 보다는 합성

  • 상속의 문제점
    • 캐슐화 깨지고 결합도 높아짐
      • 상속을 위해 부모 클래스의 내부 구조를 잘 알고 있어야 하며 이는 캡슐화 파괴, 결합도 상승으로 이어집니다.
      • 상속은 자식 클래스와 부모 클래스가 강하게 결합하게 하기 때문에 유연성 및 확장성이 떨어집니다.
    • 클래스 폭발
      • 상속을 사용하는 경우 필요 이상으로 많은 수의 클래스를 추가하게 됩니다.
      • 이는 상속의 근본적인 한계입니다. 런타임에는 변경이 불가능하기 때문에 다양한 조합이 필요하다면 새로운 클래스를 추가해야만 합니다.
    • 다중 상속에 의한 문제가 발생
      • 자바에서는 다중 상속을 허용하지 않습니다. 따라서 상속이 필요한 클래스가 다른 클래스를 이미 상속중인 경우 문제가 발생할 수 있습니다.
  • 위와 같은 문제점 때문에 상속보다는 합성을 사용해합니다.
    • 합성을 이용하면 구현을 효과적으로 캡슐화할 수 있습니다.
    • 의존하는 객체를 교체하는 것이 비교적 쉽습니다.
    • 합성을 통해 느슨한 결합을 형성할 수 있습니다.
  • 만약 상속을 반드시 사용해야 한다면 유사한 두 메소드를 추출하여 동일한 형태로 만들고, 부모 클래스의 코드를 자식으로 옮기는 것이 아니라 자식 클래스의 코드를 부모로 옮기도록 해야 합니다.
  • 상속의 진정한 목적은 코드 재사용이 아니라, 다형성을 활용하기 위한 서브타입 계층을 구축하는 것입니다.
  • [OOP] 코드의 재사용, 상속(Inheritance)보다 합성(Composition)을 사용해야 하는 이유

🤔 정적 팩토리 메서드 사용을 주의하라

리뷰어

  • 이미지 타입이 추가될 때 마다 정적 팩토리 메서드가 추가되는 구조는 비효율적인거 같다.

🤔 네이밍

리뷰어

  • 변수명 또는 메서드명은 언제나 사람들이 이해할 수 있는게 좋다.
profile
꾸준히 나아가자 🐢

0개의 댓글