[Java] Java 리팩토링 - 매직넘버
매직넘버
매직넘버란 정체를 알 수 없지만 특정 기능을 하는 마법의 숫자를 얘기한다.
예를 들어 문자열의 길이가 100까지라고 했을때 100이라는 숫자를 매직넘버라고 한다.
위의 설명을 추가하자면 for문에 i < 100
으로 작성했다면 100이 매직넘버란 소리다.
매직넘버를 피해야 하는 이유
- 의미가 모호하다
- 단순히 100이라는 숫자만 있으면 어떤 의미인지 알 수 없다. 이로인해 다른 개발자는 전체 맥락과 코드를 읽어야만 하는 상황이 발생
상수 혹은 변수명으로 의도를 명확히 하는 것이 좋다
- 변경범위를 확인하기 어렵다
- 똑같이 100을 사용하는 A라는 메서드가 하나 더 있다고 생각해보자
- 문자열의 길이가 100 -> 200으로 늘어날경우 A메서드의 100도 200으로 변경해야할까? 변경하는 것은 확실 한가?
- 특히나 0, 1, 10등 빈번하게 사용되는 숫자를 전부 매직넘버로 처리할 경우 히스토리를 알지 못하면 변경시 치명적인 버그를 발생 시킬 수 있다.
public class Main {
private static final int STRING_LEN = 100;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
if (str.length() < STRING_LEN) System.out.println("문자열 길이 100 미만");
}
}
Author And Source
이 문제에 관하여([Java] Java 리팩토링 - 매직넘버), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@conficker77/Java-Java-리팩토링-매직넘버저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)