자료 추상화
- 클래스란 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 의미를 가진다.
- 자료를 세세하게 공개하기 보다는 추상적 개념을 표현하는 것이 좋다.
자료/객체 비대칭
- 객체와 자료구조는 상호보안적인 성격을 가진다.
디미터 법칙
- 모듈은 자신이 조작하는 객체의 속사정을 몰라야한다는 법칙
- 기차 충돌
-
이런 방식의 코드는 피하는 편이 좋다. - 객체라면 내부구조를 숨겨야 하니 디미터 법칙을 위반한다.final String outputDir= ctxt.getOptions().getScratchDir().getAbsolutePath();
- 자료구조라면 내부 구조를 노출하므로 디미터 법칙 위반이 아니다.
-
- 잡종 구조
- 절반은 객체, 절반은 자료구조인 설계는 단점만 모아둔 구조다.
자료 전달 객체
- 공개 변수만 있고 함수가 없는 클래스를 말한다. DTO라고 하며, 흔히 데이터베이스에 저장된 정보를 애플리케이션 코드에서 사용할 객체로 변환할 때 사용하는 구조체이다.
결론
- 새로운 자료 타입을 추가하는 유연성이 필요하면 객체가 적합하고, 새로운 동작을 추가하는 유연성이 필요하면 자료구조가 더 적합하다.
review
디미터 법칙를 지킨다거나 객체지향적 프로그래밍을 한다는 것은 애매하고 참 어려운 것 같다. 오직 원칙만을 생각한다면 부자연스러운 코드를 짤 가능성도 있기 때문이다. 적절한 상황에 맞게 프로그램이 동작하는데 유리하게 설계해야하는 것을 잊지 않고, 또 고민하며 개발해야겠다. 🏃
출처) clean code / 인사이트
'Book review > clean code' 카테고리의 다른 글
8장. 경계(clean code) (0) | 2021.09.02 |
---|---|
7장. 오류처리(clean code) (0) | 2021.08.30 |
5장. 형식 맞추기(clean code) (0) | 2021.08.09 |
4장. 주석(clean code) (0) | 2021.08.06 |
3장. 함수(clean code) (0) | 2021.08.06 |