🥸
Enum으로 관리되고 있는 코드 값들을 조회하는 API가 있었고 , 새로운 유형의 코드 값을 추가하는 과정에서 리팩토링을 진행해 보았다 .!
List<CodeResult> resultList = new ArrayList<>();
CodeResult result = new CodeResult();
result.setReasonCd(RequestReasonType.SEARCH_OTHER_CS.getCode());
result.setReasonName(RequestReasonType.SEARCH_OTHER_CS.getName());
/* 생략 */
resultList.add(result);
result 객체를 생성하고, 해당 사유 코드와 이름을 Enum에서 get한 후 result 객체에 set한다.Enum에 새로운 값이 추가되는 경우 매번 result 객체에 해당 값을 set해야 하고 , 특정 Enum 값들만 set 해야 하는 구조라 유지 보수가 어렵다고 판단했다.private static final List<RequestReasonType> TARGET_REQUEST_REASON_TYPE = List.of(
RequestReasonType.SEARCH_OTHER_CS
, RequestReasonType.SEARCH_OTHER_EVENT
, RequestReasonType.SEARCH_ERROR_TEST
, RequestReasonType.SEARCH_OTHER_ETC
);
List<CodeResult> resultList = Arrays.stream(RequestReasonType.values())
.filter(TARGET_REQUEST_REASON_TYPE::contains)
.collect(Collectors.toList());
set 해야할 값들을 상수로 선언해서 관리한다.Enum의 values() 메서드를 활용해서 Enum 요소들을 순서대로 리턴 받은 후, Stream의 filter()를 사용하여 필요한 값들만 걸러낸다.