닭발개발

[오브젝트] 24일차. 305-321pg | 중복코드제거, DRY원칙 본문

책책책 책을 읽읍시다‼ ver.개발/[ 오브젝트: 코드로 이해하는 객체지향 설계 ]

[오브젝트] 24일차. 305-321pg | 중복코드제거, DRY원칙

D269 2023. 7. 22. 10:24
728x90

 

 

24일차.


오브젝트: 코드로 이해하는 객체지향 설계[4주차_토요일]
305-321pg

 

 

#요약

 

**Chapter 09. 유연한 설계**

- 8장에서 유연하고 재사용가능한 설계를 만드려고 적용할 수 있는 다양한 의존성 관리 기법들을 소개했다면 9장에서는 이 기법들을 원칙이라는 관점에서 정리

 

01. 개방-폐쇄 원칙(Open-Closed Principle, OCP)

02. 생성 사용 분리

03. 의존성 주입

04. 의존성 역전 원칙

05. 유연성에 대한 조언

1) 유연한 설계는 유연성이 필요할 때만 옳다.

- 유연하고 재사용 가능한 설계 : 런타임 의존성과 컴파일타임 의존성의 차이를 알고 같은 컴파일 타임 의존성으로부터 다양한 런타임 의존성을 만들 수 있는 코드 구조를 가지는 설계

 

2) 협력과 책임이 중요하다.

- 설계를 유연하게 하려면 협력에 참여하는 객체가 다른 객체에게 어떤 메시지를 전송하는지가 중요하다.

- 객체를 생성할 책임을 담당할 객체나 객체 생성 메커니즘을 결정하는 시점은 책임 할당의 마지막 단계로 미뤄야 한다.

 

 

 

 


 

 

**Chapter 10. 상속과 코드 재사용**

- 객체지향에서는 코드 재사용을 위해 '새로운'코드를 추가하는데 코드는 보통 클래스 안에서 작성되니까 새로운 클래스를 추가한다.

- 클래스를 재사용하기 위해 새로운 클래스를 추가하는 가장 대표적 기법 : 상속

- 클래스의 인스턴스 안에 기존 클래스의 인스턴스를 포함시키는 방법 : 합성

 

01. 상속과 중복코드

- 중복코드를 제거해야 할 이유

 

1) DRY 원칙

- 중복코드를 제거해야하는 이유는 변경을 방해하기 때문.

- DRY : Don't Repeat Yourself 반복하지 마라 -> 동일한 지식을 중복하지 마라

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

- 동의어 : 한번 단 한번 원칙, 단일 지점 제어 원칙

 

2) 중복과 변겅

- 많은 코드 더미 속에서 어떤 코드가 중복인지 파악하는 건 어렵다. 중복코드는 항상 함께 수정돼야 하니까 수정할 때 하나라도 빠뜨리면 버그로 이어진다.

- 중복코드를 제거하지 않은 상태에서 코드를 수정할  수 있는 유일한 방법은 새로운 중복 코드를 추가하는 것 뿐임.

- 민첩하게 하려면 중복코드를 추가하지 않고 대신 제거한다.

- 두 클래스 사이의 중복 코드를 제거하는 한 가지 방법은 클래스를 하나로 합치는 것.

 

3) 상속을 이용해서 중복 코드 제거하기

- 이미 존재하는 클래스와 유사한 클래스가 필요하다면 코드를 복사하지 말고 상속을 이요해 코드를 재사용해라.

- 상속으로 코드를 재사용하기 위해서는 부모 클래스의 개발자가 세웠던 가정이나 추론 과정을 정확하게 이해해야 한다.

 

4) 강하게 결합된 Phone과 NightlyDiscountPhone

 

 

 

 

 

 

728x90
반응형