# magic number, masic literal

매직 넘버(magic number), 매직 리터럴(magic literal) 이란 소스 코드에서 의미를 가진 숫자나 문자를 그대로 표현한 것을 말한다.

이러한 표현은 소스 코드를 읽기 어렵게 만든다. 상수로 선언되어 있지 않은 숫자, 문자열은 무엇을 의미하는지 확신할 수 없게 만든다. 이러한 의미를 파악하기 위해 해당 클래스와 흐름을 이해하기 위해 많은 시간을 요구한다.

상수(static final)로 선언하게 되면 이러한 값들에게 이름이 부여된다. 이름을 통하여 의미와 역할을 확실히 전달할 수 있다.

아래는 What is a magic number, and why is it bad? (opens new window)의 예제를 인용한 것이다.

아래 코드는 매직 넘버가 사용된 예시이다.

public class Foo {
    public void setPassword(String password) {
         // don't do this
         if (password.length() > 7) {
              throw new InvalidArgumentException("password");
         }
    }
}

위 코드는 아래와 같이 리팩토링 되어야 한다.

public class Foo {
    public static final int MAX_PASSWORD_SIZE = 7;

    public void setPassword(String password) {
         if (password.length() > MAX_PASSWORD_SIZE) {
              throw new InvalidArgumentException("password");
         }
    }
}

이러한 리팩토링은 코드의 가독성이 향상되고 유지 관리가 더 쉽게 만들 수 있다.

# References

magic number 사용을 최대한 자제하자. (opens new window)
What is a magic number, and why is it bad? (opens new window)
1. 의미가 불분명한 매직 넘버를 상수로 선언하라. (opens new window)

#Java #magic number #magic literal #매직 넘버 #매직 리터럴
last updated: 12/3/2021, 1:16:16 AM