오늘 리뷰할 코드는 로또 기능을 구현하는 과정에서 나온 코드이다.
요구사항은 다음과 같다. n장의 로또를 구매했다. 당첨 번호와 일치하는 갯수가 3개 이상인 경우 일치하는 갯수별로 로또 수를 구하는 것이다.
예를 들어 100장을 구매한 결과를 다음과 같이 얻고 싶다. * 3개 일치 - 5장 * 4개 일치 - 2장 * 5개 일치 - 0장 * 5앨 일치, 보너스 볼 일치 - 0장 * 6개 일치 - 0장
이와 같이 구현하려면 로또 등수에 따라 일치하는 갯수를 관리해야 한다. 이 요구사항을 다음과 같이 구현했다. 다음 코드에서 WinValue는 로또 등수를 관리하는 enum이다.
다음 코드를 리팩토링한다면 어떻게 하겠는가?
public class WinPrice {
private HashMap<WinValue, Integer> winPrices = new LinkedHashMap<WinValue, Integer>();
public WinPrice() {
winPrices.put(WinValue.FIFTH, 0);
winPrices.put(WinValue.FOURTH, 0);
winPrices.put(WinValue.THIRD, 0);
winPrices.put(WinValue.SECOND, 0);
winPrices.put(WinValue.FIRST, 0);
}
public void addMatchCount(int matchNum, boolean bonusBall) {
if (matchNum >= 3) {
WinValue winValue = valueOf(matchNum, bonusBall);
int matchCount = winPrices.get(winValue);
matchCount++;
winPrices.put(winValue, matchCount);
}
}
}
위 샘플 예제는 코드스쿼드 에서 새롭게 진행 중인 마스터즈 코스에서 발췌한 코드입니다. 코드스쿼드의 마스터즈 코스는 코드 리뷰 방식의 개인별 맞춤 학습 방법입니다.
0개의 의견 from FB
0개의 의견 from SLiPP
의견을 남기기 위해서는 SLiPP 계정이 필요합니다.
안심하세요! 회원가입/로그인 후에도 작성하시던 내용은 안전하게 보존됩니다.
SLiPP 계정으로 로그인하세요.
또는, SNS 계정으로 로그인하세요.