
ChronoUnit.DAYS.between(LocalDate.now(), request.date()) < member.getTeam().getDayBeforeAnnual();
}
private long remainAnnualLeaves(Member member){ // 남은 연차 계산 & 연차 조회시 반환
long maxAnnualLeave = ChronoUnit.YEARS.between(member.getCreatedAt(), LocalDateTime.now()) >= 1 ? 15L : 11L;

📌 매직 넘버를 상수로 처리하면 가독성이 더 좋아질 것 같은데, 어떻게 생각하시나요?

long maxAnnualLeave = ChronoUnit.YEARS.between(member.getCreatedAt(), LocalDateTime.now()) >= 1 ? 15L : 11L;
안그래도 이 부분의 15L : 11L 가 조금 명확하지 않다고 생각하여 (15L, 11L이 무슨 숫자인지 알 수가 없다.)
enum처리를 하려 합니다.
@RequiredArgsConstructor
public enum JoinDate {
OVER_ONE_YEAR(15L),
UNDER_ONE_YEAR(11L);
private final long maxAnnualLeaves;
public long getAnnualLeaves(){return maxAnnualLeaves;}
}
long maxAnnualLeave = ChronoUnit.YEARS
.between(member.getCreatedAt(), LocalDateTime.now()) >= 1 ?
JoinDate.OVER_ONE_YEAR.getAnnualLeaves() : JoinDate.UNDER_ONE_YEAR.getAnnualLeaves();
💡
JoinDate를enum으로 생성하고,maxAnuualLeave를enum으로 처리하였습니다.
//해당범위에 통근기록 존재 X? -> 통근기록없음 예외처리
List<GetCommuteDetail> commuteDetailList = commuteList.stream()
.map(GetCommuteDetail::from)
.collect(Collectors.toList()); //통근기록을 CommuteDetail으로 변환

📌
Collectors.toList()와Stream.toList()의 차이를 아시나요?Collectors.toList()를 사용한 이유가 궁금합니다!!

안그래도 변환 가능한 리스트를 반환하는게 조금 신경 쓰였는데,
MergeAndSort 종료 후, Merge가 완료된 CommuteList를 Collections.unmodifiableList()를 통해 불변 List로
감싸서 반환하도록 처리하겠습니다.
private List<GetCommuteDetail> findCommuteListByMemberIdAndStartOfWork(GetCommuteRecordRequest request) {
List<Commute> commuteList = commuteRepository
.findCommuteListByMemberIdAndStartOfWork(request.id(), request.getYear(), request.getMonth());
if (commuteList.isEmpty()) throw new CommuteNotFoundException();
//해당범위에 통근기록 존재 X? -> 통근기록없음 예외처리
List<GetCommuteDetail> commuteDetailList = commuteList.stream()
.map(GetCommuteDetail::from)
.collect(Collectors.toList()); //통근기록을 CommuteDetail으로 변환
List<AnnualLeave> annualLeaveLeavesList = annualLeaveService // 연차기록찾기 (오늘보다 미래의 연차기록은 가져오지않음)
.findAnnualLeavesByMemberIdAndYearMonth(request.id(), request.yearMonth());
mergeAndSort(commuteDetailList, annualLeaveLeavesList); // .addAll()을 통한 merge
return Collections.unmodifiableList(commuteDetailList); // 불변리스트로 변환 후 반환
}
💡
return시commuteDetailList를Collections.unmodifiableList()로 감싸서 불변List로 만들어 주었습니다.