변경에 취약한 코드
결합도(Coupling) : 객체 사이의 의존성
- 결합도가 높을 수록 함께 변경될 확률이 높아진다.
- 결합도를 낮춰 변경이 용이한 설계를 만들어야 한다.
자율성을 높이자
캡슐화(encapsulation) : 개념적이나 물리적으로 객체 내부의 세부적인 사항을 감추는 것
객체를 인터페이스와 구현으로 나누고 인터페이스만을 공개하자
- 객체 사이의 결합도를 낮추고 변경하기 쉬운 코드를 작성하기 위해 따라야 하는 가장 기본적인 설계 원칙
캡슐화와 응집도
응집도(cohesion) : 밀접하게 연관된 작업만을 수행하고 연관성 없는 작업은 다른 객체에게 위임하는 것
- 자신의 데이터를 스스로 처리하는 자율적인 객체를 만들면 결합도를 낮추고 응집도를 높일 수 있다.
절차지향과 객체지향
절차지향 : 프로세스와 데이터를 별도의 모듈에 위치시키는 방식
객체지향 : 프로세스와 데이터가 동일한 모듈 내부에 위치하도록 하는 방식
책임의 이동
설계를 어렵게 만드는 것은 의존성
해결 방법은 불필요한 의존성을 제거함으로써 객체 사이의 결합도를 낮추는 것
결합도를 낮추려면 다른 객체가 몰라도 되는 세부사항을 내부로 감춰 캡슐화
결과적으로 불필요한 세부사항을 객체 내부로 캡슐화 하는 것은 객체의 자율성을 높이고 응집도 높은 객체들의 공동체를 창조할 수 있게 한다.
'책 > Object' 카테고리의 다른 글
메시지와 인터페이스 (0) | 2020.06.29 |
---|---|
책임 할당하기 (0) | 2020.06.23 |
설계 품질과 트레이드오프 (0) | 2020.06.22 |
역할, 책임, 협력 (0) | 2020.06.22 |
객체지향 프로그래밍 (0) | 2020.06.02 |