우테코 과정을 시작하고 2번째 미션인 로또 미션을 진행하며 로또 우승 상금으로 큰 단위의 숫자를 입력해야하는 상황을 마주했습니다.
우승 금액이 1등의 경우 20억을 받는 것으로 설정하는 만큼 숫자의 단위가 엄청 크고, 숫자를 입력하면서도, 읽으면서도 매우 불편합니다..🥲
저 또한 미션을 진행하면서도 숫자를 올바르게 입력한 것이 맞는지 확인하면서 눈이 빠지는줄 알았습니다.
PR을 보내고 리뷰어 코니
가 이러한 숫자들을 가독성있게 변경하는 방법에 대하여 알려주어, 해당 내용을 정리해보고자 합니다.
public enum Rank {
FIRST(2000000000, 6, false),
SECOND(30000000, 5, true),
THIRD(1500000, 5, false),
FOURTH(50000, 4, false),
FIFTH(5000, 3, false),
FAIL(0, 0, false);
private final int prize;
private final int matched;
private final boolean bonus;
}
큰 숫자들을 가독성 있게 하는 방법
Java7버전 이후부터는 숫자 Literal사이에는 원하는 수 만큼 Underscore(_
)를 넣을 수 있다고 합니다.
이러한 기능을 사용하면 숫자들의 그룹을 구분할 수 있어 더욱 가독성 있는 코드를 만들 수 있습니다.
Oracle Java SE 문서의 예시를 보면 신용카드번호, 보안번호, 긴 16진수 등의 예시를 들었습니다.
Underscore사용이 불가능한 경우
- 숫자의 시작, 끝에는 위치 불가
- 부동소수점의 소수점에 인접한 위치에는 위치 불가
- 숫자 문자열이 예상되는 위치에는 위치 불가
- float, long타입을 알려주는 F 또는 L 앞에는 위치 불가
적용 예시
위의 내용을 적용하여 코드를 변경해봤습니다. 확실히 숫자들 사이에 Underscore(_
)를 넣어 큰 숫자를 표시하니 가독성이 좋아진 것을 확인할 수 있었습니다.
public enum Rank {
FIRST(2_000_000_000, 6, false),
SECOND(30_000_000, 5, true),
THIRD(1_500_000, 5, false),
FOURTH(50_000, 4, false),
FIFTH(5_000, 3, false),
FAIL(0, 0, false);
private final int prize;
private final int matched;
private final boolean bonus;
}