배움과 성장/소프트웨어 개발
응집도와 결합도: 변경 비용으로 판단하는 모듈 설계
“높은 응집도와 낮은 결합도”는 외우기 쉬운 문장이지만 code review에서 그대로 쓰면 판단이 모호하다. 더 실용적인 질문은 두 가지다.이 module 안의 code가 같은 이유로 함께 바뀌는가한 module의 변경이 몇 개의 외부 module까지 연쇄 수정시키는가응집도(cohesion)는 한 module 내부의 책임이 얼마나 한 목적에 모여 있는지, 결합도(coupling)는 module 사이의 지식과 의존이 얼마나 강한지를 나타낸다. 목표는 dependency를 없애는 것이 아니라 필요한 dependency를 드러내고 변경이 새는 범위를 줄이는 것이다.응집도는 코드가 가까이 있다는 뜻이 아니다한 class에 method가 모여 있다고 응집도가 높은 것은 아니다. 다음 신호가 있으면 서로 다른 변..