코드 내부의 무작정 등장하는 숫자나 문자는 무엇을 의미하는지 명확하게 알기 어렵다.
이를 상수로 작성하면 이름을 가질 수 있고 그 이름을 통해 의미를 전달할 수 있다.
public String howl() {
if(this.type == 1) { // 1이 어떤 의미로 사용되었는지 파악하기 어렵다.
return "멍멍"
}
}
private static final int ANIMAL_TYPE_DOG = 1;
public String howl() {
if(this.type == ANIMAL_TYPE_DOG) { // 강아지가 내는 소리라는 것을 명확하게 알수 있다.
return "멍멍"
}
}
배열이나 콜렉션의 반복문의 인덱스로 사용되는 경우는 오히려 상수로 분리하는 것이 가독성에 좋지 않다고 생각한다. 무조건 모든 숫자를 추출 하는 것이 아니라 숫자에 어떤 의미가 있는지 고민해보는 것이 좋을 것 같다.
로버트 C. 마틴, 『클린코드』, 인사이트(2013), G25: 매직 숫자는 명명된 상수로 교체.