MagicNumber

  • 코드에 의미있는 설명이나 문맵 없이 하드코딩된 원시 숫자 값을 사용하는 것을 의미
  • 개발자가 쉽게 이해하거나 인식할 수 없는 값을 나타내는 데 자주 사용한다.
  • 설명이나 컨텍스트 없이 코드에 하드코딩된 상수 값을 의미한다.
  • 숫자 매개변수, 오류 코드, 크기 또는 상수 등 다양한 것을 나타낼 수 있다.
  • 명확성과 가독성이 떨어져서 무엇을 의미하는 파악하기 어려워진다.

예시

class Circle {
    companion object {
        const val PI: Double = 3.141692
        //MagicNumber가 될 수 있다.
    }

    fun calculate(radius: Double): double {
        return PI * radius * radius
    }
}

문제점

1. 가독성 부족

  • 개발자의 코드 가독성, 이해도를 떨어뜨린다.

    2. 코드 유지 관리 문제

  • 값을 일관되게 관리하기 어려워진다.

    3. 코드 중복

  • 동일한 매직너머를 재사용하는 경우 불일치를 초래할 수도 있다.

    4. 사이드 이펙트

  • 매직넘버를 잘못 이해하면 의도하지 않은 결과가 발생할 수도 있다.

대안

1. 상수 사용

2. 주석 제공

3. Enum 사용

4. 상수 추출로 중앙 집중화

5. 구성 파일 사용