소프트 웨어 모듈의 세 가지 목적 by Robert C. Martin

  1. 실행 중 제대로 동작할 것
  2. 변경을 위해 존재할 것 → 변경에 대응할 수 있을 것
  3. 코드를 읽는 사람과 의사소통이 가능할 것 → readability 가 확보되어야 한다

다시 한 번, 자율 / 책임 / 역할 / 협력

Untitled

그 외 인상깊었던 저자의 어록들

변경 가능한 코드란 이해하기 쉬운 코드다. 만약 여러분이 어떤 코드를 변경해야 하는데, 그 코드를 이해할 수 없다면 어떻겠는가? 그 코드가 변경에 유연하다고 하더라도, 아마 코드를 수정하겠다는 마음이 선뜻 들지는 않을 것이다.

객체지향의 세계에서 애플리케이션은 객체들로 구성되며, 애플리케이션의 기능은 객체들 간의 상호작용을 통해 구현된다. 그리고 객체 사이의 상호작용은 객체 사이에 주고 받는 메시지로 표현된다.

훌륭한 객체지향 설계란, 협력하는 객체 사이의 의존성을 적절하게 관리하는 설계다. 세상에 엮인 것이 많은 사람일수록 변하기 어려운 것처럼, 객체가 실행되는 주변 환경에 강하게 결합될수록 변경하기 어려워 진다. 객체 간의 의존성은 애플리케이션을 수정하기 어렵게 만드는 주범이다.