
아키텍처
코드 품질 개선 기법 5편: 나쁜 열거가 좋은 계층을 몰아낸다
두줄요약
외부 저장소 값과 enum 선언을 `name`이나 `ordinal`로 직접 묶으면 리팩토링 때 외부 계약까지 깨질 수 있습니다. 별도 매핑값과 변환 계층으로 외부 값과 내부 정의를 분리하는 방법을 소개했습니다.
핵심 내용
- 외부 저장소나 API 값과 enum 선언을
name,ordinal로 직접 연결하면 리팩토링 시 외부 값까지 함께 깨지는 결합 문제 - 컨버터가 부패 방지층 역할을 하도록 외부 값과 enum 내부 정의를 분리하는 설계 필요
dbValue같은 별도 속성과 매핑 테이블로 외부 값 변환을 관리하면 이름 변경, 순서 변경의 영향 범위 축소- 임시 변환 용도라면 예외적으로 사용할 수 있지만, 가능하면 enum 타입 자체를 유지하는 편이 바람직
적용해볼 점
- enum 직렬화·역직렬화 코드에서
name,ordinal사용 여부 점검 - 외부 계약값과 내부 도메인값을 분리하는 전용 매핑 계층 도입
- 리팩토링 시 외부 API/DB 포맷 영향까지 함께 검토