•
Why
◦
응집은 ‘같은 목적을 가진 요소들이 서로 얼마나 잘 뭉쳐있나’라는 문장으로 표현할 수 있음. 응집도가 낮다면 관련된 것들이 여기저기 흩어져 있어 같은 수정을 여러 곳에서 여러 번 하게되는 문제가 발생한다.
◦
SRP를 위반하는 모듈은 책임을 벗어나는 요소를 함께 기억하고 있어야 하기 때문에 인지 비용이 높을 뿐만 아니라, 예상치 못한 사이드 이펙트를 일으킬 위험을 가진다.
◦
응집도 높은 모듈은 이름만 봐도 역할이 드러나고, 변경 요구도 명확히 한곳에 모여 변경 비용이 급감한다.
•
How
1.
특정 함수나 모듈을 “이 함수 / 모듈은 _____ 을 한다” 라는 한 줄을 적어본다.
2.
1) 도저히 ‘그리고’를 빼고는 설명할 수 없거나 2) 파라미터로 넘겨지는 값에 일관성이 없고 번잡하다면 분리를 고려한다.
•
Expectation
◦
상황 인식: 함수/컴포넌트 이름 짓기가 어렵거나, 여러 요소를 포괄하느라 애매한 이름을 쓰고 있다면 응집도 문제 감지
◦
패턴 매칭: "이거 사실 2개 함수로 나눠야 하는 거 아닌가?" 같은 분리 시그널 포착
◦
자동 대응: 즉시 멈추고 "이게 하는 일이 뭐지?" 한 문장 작성 → "그리고"가 들어가면 분리
