응집도가 높아야하고 결합도가 낮아야한다.
응집도 : 관련있는 데이터나 함수가 얼마나 잘 묶여있는가
결합도 : 관련없는것들끼리 묶여있지 않는것 (의존성)
한 모듈이 여러가지 이유로 다양하게 변경되어야하는 상황
ex) 새로운 결제 방식 도입 , DB변경할때 동일한 클래스에 여러메서드를 수정해야하는 경우
문제점
단계 쪼개기 (Split Phase)
함수 옮기기
함수 추출하기
클래스 추출하기