호출자 요구 파악
구현체가 가진 모든 메서드가 아니라 호출자가 실제로 필요한 동작만 계약으로 뽑는다.
큰 인터페이스는 구현체를 묶어버린다인터페이스를 만들었다고 자동으로 안정적인 설계가 되지는 않는다. 클래스가 구체 구현에 직접 묶이는지, mock이나 fake로 교체할 수 있는지, 의존성 방향이 상위 정책에서 하위 세부 구현으로 흐르는지 확인해야 한다.
구현체가 가진 모든 메서드가 아니라 호출자가 실제로 필요한 동작만 계약으로 뽑는다.
큰 인터페이스는 구현체를 묶어버린다상위 서비스가 특정 클래스 new에 직접 의존하지 않도록 constructor나 DI로 주입한다.
교체 가능성이 설계의 증거다네트워크, DB, 시간, 랜덤값 의존성은 mock이나 fake로 대체 가능한지 본다.
테스트가 어려우면 경계가 흐린 것이다상위 정책 코드가 하위 세부 구현의 import를 직접 알고 있는지 확인한다.
의존성 방향을 뒤집는다읽기 전용, 쓰기 전용, 조회, 저장처럼 역할별로 인터페이스를 나눈다.
필요 없는 메서드 구현을 강요하지 않는다