좋은 소프트웨어 설계의 핵심은 모듈화가 얼마나 잘 되어 있는가를 뜻하는 모듈성이다.
모듈성을 높이면?
모듈성은 어딘가를 수정하려고 할 떄 해당 기능과 깊이 관련된 작은 일부만 이해해도 가능하게 해주는 능력이다.
→ 서로 연관된 요소들을 함께 묶고, 연결 관계를 쉽게 찾고 이해할 수 있게해준다.
객체 지향 프로그래밍의 핵심 모듈화 컨텍스트는 클래스이다.
자신이 속한 모듈 A의 요소들보다 다른 모듈 B의 요소들을 더 ㅁ낳이 참조한다면 모듈 B로 옮겨줘야 마땅하다.
→ 캡슐화가 좋아지면 세부사항에 덜 의지한다.
함수를 옮길지 말지?
→ 현재 컨텍스트와 후보 컨텍스트를 둘러보자
프로그램의 진짜 힘은 데이터 구조에서 나온다.
→적합한 데이터 구조를 활용하면, 코드는 자연스럽게 단순하고 직관적으로 짜여진다.
⇒ 데이터 구조가 적절치 않음을 깨닫게 되면 곧바로 수정해야한다.