파트너 조회 중복 로직을 공통 메서드로 통합해 유지보수성 개선
목차
partnerSn 조회 로직을 resolvePartnerSn 공통 메서드로 추출
리팩토링 작업을 완료했음.
리팩토링 이유
중복 코드가 여러 클래스에 흩어져 있었음. 수정이 필요할 때 모든 위치를 찾아야 하고, 누락 시 버그가 생김. 공통 메서드로 추출해서 단일 수정 포인트를 만들었음.
변경 전/후
// 수정 전: 중복/복잡 로직
// 각 클래스에 동일 로직 반복
// 수정 후: 명확하고 단일 책임
public static Long resolveId(Object source) {
if (source instanceof TypeA a) return a.getId();
if (source instanceof TypeB b) return b.getRefId();
throw new IllegalArgumentException("지원하지 않는 타입: " + source.getClass());
}
변경 범위
내부 클래스 2개
기대 효과
수정 포인트가 하나로 줄어들어 향후 변경 비용이 낮아짐. 팀원이 코드를 읽을 때 중복을 보고 혼란스러워하는 일도 없어짐.
회귀 검증
리팩토링은 외부 동작을 바꾸지 않아야 함. 입력/출력이 동일한지 주요 케이스를 기준으로 확인했음. 내부 구조만 변경했고, 배포 후 이상 없이 동작했음.
개발 원칙 적용
이번 작업에서 몇 가지 원칙을 확인했음.
단일 책임 원칙: 각 클래스/함수가 하나의 역할만 담당하도록 구분했음. 역할이 섞이면 수정할 때 예상치 못한 곳에 영향이 가기 쉬움.
방어적 프로그래밍: 외부 입력이나 외부 시스템 응답은 항상 의심하고 검증하는 코드를 넣었음. 특히 null 처리와 상태 검증은 빠뜨리기 쉬운 부분임.
로깅: 주요 처리 지점마다 로그를 남겼음. 운영 중 이슈가 생겼을 때 로그만 봐도 원인을 찾을 수 있어야 함.
log.info("처리 시작: id={}, type={}", id, type);
// ... 처리 ...
log.info("처리 완료: id={}, result={}", id, result);
다음
댓글 0
첫 댓글 달아줘.