Rank 내부적으로 값이 변경된다면 해당 코드를 수정해야 하는 문제가 남아있네요 🤔
Rank 안에 matchBonus 상태도 가지고 있다면 values()를 활용한 반복문을 이용할 수 있을 것 같아요!
if (countOfMatch == Rank.FIRST.getCountOfMatch()) {
return FIRST;
}
if (countOfMatch == Rank.SECOND.getCountOfMatch() && matchBonus) {
return SECOND;
}
if (countOfMatch == Rank.THIRD.getCountOfMatch() && !matchBonus) {
return THIRD;
}
if (countOfMatch == Rank.FOURTH.getCountOfMatch()) {
return FOURTH;
}
if (countOfMatch == Rank.FIFTH.getCountOfMatch()) {
return FIFTH;
}
return MISS;
}
이 피드백을 받고 현재 Rank 클래스의 valueOf 메서드를 새로 수정해 보았는데,
리뷰어님이 말씀해주신 matchBonus를 Rank안에 속성으로 넣는다고 하더라도,
어디선가는 countOfMatch가 5일때만 matchBonus를 true false를 검사하여야 하는 조건문이 필요하고, 5라는 상수를 지정하여야 합니다.
그럴바에는 아래와 같이 Rank안에서 확인하는 작업이 더 효율적이라고 생각하는데 리뷰어님의 의견은 어떠신가요??
public static Rank valueOf(int countOfMatch, boolean matchBonus) {
if (countOfMatch == SECOND.getCountOfMatch() && matchBonus) {
return SECOND;
}
return Arrays.stream(values())
.filter(rank -> rank.getCountOfMatch() == countOfMatch)
.findFirst()
.orElse(MISS);
}
'강의 > TDD, Clean Code with Java 12기' 카테고리의 다른 글
람다 (0) | 2021.08.25 |
---|---|
[로또] step4 - 로또(수동) - 29일차 (0) | 2021.08.17 |
[로또] step3 - 로또(2등) - 27일차 (피드백 및 피드백 반영) (0) | 2021.08.15 |
[로또] step3 - 로또(2등) - 26일차 (0) | 2021.08.14 |
[로또] step2 - 로또(자동) - 최종 피드백 (22일차) (0) | 2021.08.10 |