TDD, 클린 코드 with Java 18기: 실시간 강의 정리(6)
패키지 설계
- 양방향 의존관계는 지양해야한다.
- 양바향 의존관계가 발생하는 순간 독립적으로 분리 불가능하다.
- 양방향 의존관계를 해결할 수 있는 방법은 인터페이스와 구현체 의존관계를 연결하는 중간 패키지를 만드는 것이다.

- 프로젝트 규모가 커지는 경우 양방향 의존관계를 찾는 것이 쉽지 않은데 이는 정적 분석 도구를 이용하면 쉽게 찾을 수 있다.
점진적인 리팩터링 전략
- 리팩토링 종류
- 코드에서 리팩토링
- 언어 변경에 따른 리팩토링
- 프레임워크 변경에 따른 리팩토링
- 데이터베이스 리팩토링
- 모두 다 점진적으로 리팩토링 해야한다.
도메인 객체 설계 후 테이블 설계
- 로직이 복잡하면 복잡할 수록 도메인 객체를 먼저 설계할 때 이점이 크다.
- 기능 변경이 많은 시점 또는 새로운 기능 개발을 시작하는 시점에 유리한 방식이다.
- 객체 설계 변경에 대한 부담이 지속적인 리팩토링이 가능하다.
- 요구사항 분석, 도메인 로직 구현, 단위 테스트에 집중할 수 있다.
- 테이블 스키마를 최대한 늦게 설계해보도록 하자
ORM 프레임워크를 사용하지 않는다면
- 매핑을 담당하는 객체와 도메인을 담당하는 개체를 분리하여 관리해보자.