[오브젝트] 상속과 코드 재사용

skayjays·2021년 12월 21일
0

오브젝트

목록 보기
3/4

상속과 중복코드

  • 신뢰할 수 있고 수정하기 쉬운 소프트웨어를 만드는 효과적인 방법 중 하나는 중복을 제거하는 것이다.

DRY원칙
모든 지식은 시스템 내에서 단일하고, 애매하지 않고, 정말로 믿을 만한 표현 양식을 가져야 한다.

상속을 위한 경고

  • 자식 클래스의 메서드 안에서 super 참조를 이용해 부모 클래스의 메서드를 직접 호출 할 경우 두 클래스는 강하게 결합된다. super 호출을 제거할 수 있는 방법을 찾아 결합도를 제거하라
  • 상속받은 부모 클래스의 메서드가 자식 클래스의 내부 구조에 대한 규칙을 깨트릴 수 있다.
  • 자식 클래스가 부모 클래스의 메서드를 오버라이딩할 경우 부모 클래스가 자신의 메서드를 사용하는 방법에 자식 클래스가 결합 될 수 있다.
  • 클래스를 상속하면 결합도로 인해 자식 클래스와 부모 클래스의 구현을 영원히 변경하지 않거나, 자식 클래스와 부모 클래스를 동시에 변경하거나 둘중 하나를 선택할 수 밖에 없다.

추상화에 의존하자.

  • 두 메서드가 유사하게 보인다면 차이점을 메서드로 추출하라. 메서드 추출을 통해 두 메서드를 동일한 형태로 보이도록 만들 수 있다.
  • 부모 클래스의 코드를 하위로 내리지 말고 자식 클래스의 코드를 상위로 올려라. 부모 클래스의 구체적인 메서드를 자식 클래스르 내리는 것보다 자식클래스의 추상적인 메서들를 부모 클래스로 올리는 것이 재사용성과 응집도 측면에서 더 띄어난 결과를 얻을 수 있다.
  • 추상화가 핵심이다
  • 의도를 드러내는 이름 선택해라

작가 의견

  • 상속은 코드 재사용과 관련된 대부분의 경우에 우아한 해결 방법이 아니다. 객체지향에 능숙한 개발자들은 상속의 단점을 피하면서도 코드를 재사용할 수 있는 더 좋은 방법이 있다는 사실을 알고 있다. 바로 합성이다.

정리

이번 장에서는 상속에 대해서 알아보았다. 상속은 정말 잘 쓰면 유용하지만 무턱대고 쓰다가는 큰코다치는 경험을 많이 한 것 같다. 개인적인 생각으로는 상속의 경우 코드 재사용성면에서 쓰는 것도 좋지만 현실 개념에서 실제 상속관계인 내용에 대해 사용한다면 훨씬 유용하게 쓰이는 것 같다. 그래서 상속을 사용할 때는 실제 도메인이 부모 클래스와 자식 클래스 관계로 표현이 되는지를 먼저 판단하고 쓴다면 강력한 개발 방법임에는 틀림없는 것 같다.

profile
기초를 탄탄하게

0개의 댓글