변경 이유 분리
검증, 저장, 출력 책임이 한 클래스에 모이면 타입도 넓어지고 테스트가 어려워집니다.
책임, 확장, 치환, 인터페이스 크기, 의존 방향을 타입 계약으로 확인하면 설계 리뷰가 구체적입니다.
검증, 저장, 출력 책임이 한 클래스에 모이면 타입도 넓어지고 테스트가 어려워집니다.
조건문을 늘리기보다 인터페이스나 판별 유니언으로 확장 지점을 만듭니다.
PaymentStrategy
하위 타입은 기존 계약의 반환 의미와 예외 조건을 깨지 않아야 합니다.
고수준 모듈은 구체 클래스보다 필요한 메서드만 담은 인터페이스에 기대야 합니다.
ILogger