(자료 구조를 사용하는) 절차적인 코드는 기존 자료 구조를 변경하지 않으면서 새 함수를 추가하기 쉽다. 반면, 객체 지향 코드는 기존 함수를 변경하지 않으면서 새 클래스를 추가하기 어렵다.
반대쪽도 참이다.
절차적인 코드는 새로운 자료 구조를 추가하기 어렵다. 그러려면 모든 함수를 고쳐야한다. 객체 지향 코드는 새로운 함수를 추가하기 어렵다. 그러려면 모든 클래스를 고쳐야한다.
다시 말해, 객체 지향 코드에서 어려운 변경은 절차적인 코드에서 쉬우며, 절차적인 코드에서 어려운 변경은 객체 지향 코드에서 쉽다!
👩🏻💻 💡
이번 6장에서는 내용도 적었고 나에게 크게 와닿는 내용이 없었기 때문에, 6장에 나온 디미터 법칙에 대해 요약하고, 추가로 공부한 내용을 정리하였다.
디미터 법칙은 잘 알려진 휴리스틱으로, 모듈은 자신이 조작하는 객체의 속사정을 몰라야한다는 법칙이다.
간단히 말하면 아래의 메소드만 호출하는 규칙들을 지키며 결합도를 낮추는 법칙이다.
const obj = object.getChild()
.getContent()
.getItem()
.getTitle();
흔히 위와 같은 코드를 기차 충돌이라 부른다. 여러 객차가 한 줄로 이어진 기차처럼 보이기 때문이다. 일반적으로 조잡하다 여겨지는 방식이므로 피하는 편이 좋다. 이런식으로 호출하면 obj는 getChild, getContent, getItem, getTitle 함수에 모두 의존적이게 된다.