[Java] Java 리팩토링 - 매직넘버

3079 단어 JavaJava

매직넘버

매직넘버란 정체를 알 수 없지만 특정 기능을 하는 마법의 숫자를 얘기한다.

예를 들어 문자열의 길이가 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 미만");
      }
}

좋은 웹페이지 즐겨찾기