오브젝트 Ch.10

Manx·2022년 5월 20일
0
post-thumbnail

'오브젝트: 코드로 이해하는 객체지향 설계' 2주차
분량 : Ch.6 ~ Ch.10
기간 : 22.5.15 ~ 22.5.21

이번 챕터는 상속의 문제점을 코드 위주로 설명해 글로 적기에는 많은 어려움이 있어 간략하게만 적었다.

Ch.10 상속과 코드 재사용

DRY 원칙

  • 중복 코드 : 요구사항이 변경됐을 때 두 코드를 함께 수정해야 하는 코드
  • 중복 코드는 변경을 방해한다.
  • 새로운 코드를 추가하고 나면 언젠가는 변경될 것이라고 생각해야 한다.

앤드류 헌트, 데이비드 토마스의 Don't Repeat Yourself를 따 DRY원칙이라고 한다.

중복 코드가 늘어날수록 애플리케이션은 변경에 취약해지고 버그가 발생할 가능성이 높아진다.
중복 코드의 양이 많아질수록 버그의 수는 증가하며 그에 비례해 코드를 변경하는 속도는 점점 더 느려진다.

중복 코드를 제거할 수 있는 방법에는 무엇이 있을까?
대표적인 방법은 상속이다.
그러나! 객체지향에 대한 이해가 깊어지면서 사람들은 코드를 재사용하기 위해 맹목적으로 상속을 사용하는 것이 위험하다는 사실을 깨닫기 시작했다.

상속을 위한 경고

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

상속은 자식 클래스를 점진적으로 추가해서 기능을 확장하는 데는 용이하지만 높은 결합도로 인해 부모 클래스를 점진적으로 개선하는 것은 어렵게 만든다.

상속의 단점을 피하면서도 코드를 재사용할 수 있는 더 좋은 방법 : 합성

profile
백엔드 개발자

0개의 댓글