자료 추상화
자료를 세세하게 공개하기보다는 추상적인 개념으로 표현하는 편이 좋다.
인터페이스나 조회/설정 함수만으로는 추상화가 이뤄지지 않는다.
개발자는 객체가 포함하는 자료를 표현할 수 있는 가장 좋은 방법을 심각하게 고민해야 한다.
(자료 구조를 사용하는) 절차적인 코드는 기존 자료 구조를 변경하지 않으면서 새 함수를 추가하기 쉽다.
반면, 객체 지향 코드는 기존 함수를 변경하지 않으면서 새 클래스를 추가하기 쉽다.
다시 말해, 객체 지향 코드에서 어려운 변경은 절차적인 코드에서 쉬우며, 절차적인 코드에서 어려운 변경은 객체 지향 코드에서 쉽다.
디미터 법칙
객체는 조회 함수로 내부 구조를 함부로 공개하면 안 된다는 법칙.
디미터 법칙은 "클래스 C의 메서드 f는 다음과 같은 객체의 메서드만 호출해야 한다"라고 주장한다.
- 클래스 C
- f가 생성한 객체
- f 인수로 넘어온 객체
- C 인스턴스 변수에 저장된 객체
하지만 위 객체에서 허용된 메서드가 반환하는 객체의 메서드는 호출하면 안 된다.
객체라면 뭔가를 하라고 말해야지 속을 드러내라고 말하면 안 된다.
내부 구조를 드러내지 않아야 하며, 메서드는 자신이 몰라야 하는 여러 객체를 탐색할 필요가 없다.
(어떤) 시스템을 구현할 때, 새로운 자료 타입을 추가하는 유연성이 필요하면 객체가 더 적합하다.
다른 경우로 새로운 동작을 추가하는 유연성이 필요하면 자료 구조와 절차적인 코드가 더 적합하다.
우수한 소프트웨어 개발자는 편견 없이 이 사실을 이해해 직면한 문제에 최적인 해결책을 선택한다.
'독서록 > Clean Code' 카테고리의 다른 글
[Clean Code] 8장 경계 (0) | 2022.04.25 |
---|---|
[Clean Code] 7장 오류 처리 (0) | 2022.04.20 |
[Clean Code] 5장 형식 맞추기 (0) | 2022.04.19 |
[Clean Code] 4장 주석 (0) | 2022.04.18 |
[Clean Code] 3장 함수 (0) | 2022.04.14 |