프로그래밍 패러다임은 왜 배워야하는가?
제대로 동작하고, 읽기 쉽고, 변경에 용이한 코드를 작성하는 것이 목표이다.
의존성은 변경과 관련되어 있다. 객체지향에서 객체 사이의 의존성을 없애는 것은 불가능하지만 필요한 최소한의 의존성만을 유지하고 불필요한 의존성을 제거하는 것이 중요하다.
객체들 간의 의존성이 강하면 변경에 취약해진다. 따라서 의존성을 적절히 관리하여 변경에 용이한 설계를 만드는 것이 좋다.
캡슐화를 활용해 의존하는 객체의 구현(세부 사항)을 알지 못하게끔 바꾸는 것이 중요하다. 객체 내부의 상태는 캡슐화하고 객체 간에는 오직 메시지를 통해서만 상호작용하게 만들면 결합도가 낮아진다.
절차지향적으로 코드를 작성하다보면 프로세스가 데이터를 전부 알아야하는 구조 (의존성이 강하고 결합도가 높은 구조) 이기 때문에 데이터가 조금만 변경해도 그 영향 범위가 매우 커지게 된다. 변경이 일어날 때 영향 범위가 작은 구조가 변경에 용이한 구조이다.
절차지향적인 코드임은 어떻게 캐치할 수 있을까?
변화에는 왜 용이해야할까?