- 스터디 중 삼색볼펜법으로 체크한 부분들을 팀원들과 공유한 내용입니다.
- 스터디원들이 2명 이상 겹치는 부분은 강조표시(BOLD)가 되어 있습니다.
- 문장은 페이지의 오름차순으로 정렬되어 있습니다.
- 부모 클래스와 자식 클래스 모두 추상화에 의존하도록 수정해야 한다.(332p)
- 정말로 필요한 경우에만 상속을 사용하라.(345p)
- 새로운 클래스의 인스턴스 안에 기존 클래스의 인스턴스를 포함시키는 방법으로 흔히 합성이라고 부른다.(309p)
- 중복 코드는 변경을 방해한다.(309p)
- 요구사항이 변경됐을 때 두 코드를 함께 수정해야 한다면 이 코드는 중복이다.(309p)
- 기회가 생길 때마다 코드를 DRY하게 만들기 위해 노력하라(316p)
- 중복 코드는 새로운 중복 코드를 부른다.(316p)
- 코드 중복을 제거하기 위해 상속을 사용했음에도 세금을 계산하는 로직을 추가하기 위해 새로운 중복 코드를 만들어야 하는 것이다.(322p)
- 자식 클래스의 메서드 안에서 super 참조를 이용해 부모 클래스의 메서드를 직접 호출할 경우 두 클래스는 강하게 결합된다.(322p)
- 상속은 자식 클래스를 점진적으로 추가해서 기능을 확장하는 데는 용이하지만 높은 결합도로 인해 부모 클래스를 점진적으로 개선하는 것은 어렵게 만든다.(323p)
- 상속받은 부모 클래스의 메서드가 자식 클래스의 내부 구조에 대한 규칙을 깨트릴 수 있다.(326p)
- 자식 클래스가 부모 클래스의 메서드를 오버라이딩하거나 불필요한 인터페이스를 상속받지 않았음에도 부모 클래스를 수정할 때 자식 클래스를 함께 수정해야 할 수도 있다는 사실을 잘 보여준다.(331p)
- 두 메서드가 유사하게 보인다면 차이점을 메서드로 추출하라.(333p)
- 부모 클래스의 코드를 하위로 내리지 말고 자식 클래스의 코드를 상위로 올려라.(333p)
- 목표는 모든 클래스들이 추상화에 의존하도록 만드는 것이기 때문에 이 클래스는 추상 클래스로 구현하는 것이 적합할 것이다.(336p)
- 이 클래스들은 단일 책임 원칙을 준수하기 때문에 응집도가 높다.(340p)
- 차이점을 메서드로 추출하고 공통적인 부분은 부모 클래스로 이동하라.(340p)
- 따라서 클래스 사이의 상속은 자식 클래스가 부모 클래스가 구현한 행동뿐만 아니라 인스턴스 변수에 대해서도 결합되게 만든다.(343p)
- 결과적으로 책임을 아무리 잘 분리하더라고 인스턴스 변수의 추가는 종종 상속 계층 전반에 걸친 변경을 유발한다.(343p)
- 기존 코드와 다른 부분만을 추가함으로써 애플리케이션의 기능을 확장하는 방법을 차이에 의한 프로그래밍이라고 부른다.(344p)
- 재사용 가능한 코드란 심각한 버그가 존재하지 않는 코드다.(344p)
- 언젠가 코드를 변경해야 할 때 폭탄의 뇌관이 당겨질지, 아니면 아무 일 없었다는 듯이 평화롭게 지나갈지는 그 누구도 알지 못한다.(314p)
- 인터페이스 설계는 제대로 쓰기엔 쉽게, 엉터리로 쓰기엔 어렵게 만들어야 한다.(325p)