설계란?
코드를 어떻게 배치(클래스, 프로젝트, 패키지..)할 것인지에 대한 의사결정
어디에 넣는 것이 좋을까?
같이 변경되는 = 의존성이 있는 경우 -> 같은 위치에 두어야한다.
의존성이 있다고 무조건 바뀌는 것도 아님. = 설계를 잘~ 하면
Dependency = 변경에 의해 영향을 받을 수 있는 가능성
의존성 관리 법칙
양방향 의존성을 피하자 : 두 개가 하나의 클래스인걸 어거지고 찢어놓았다고 보면 됨
다중성이 적은 방향을 선택하자 : 일대다 << 다대일(Good)
의존성이 필요없다면 제거하자 : (중요)
패키지 사이의 의존성 사이클을 제거하라 : 양방향 패키지 or 사이클이 있는 경우 관련있는 패키지가 하나의 패키지여야함 = 동기화 되어야함을 뜻함