코드 냄새 02 - 상수 및 매직 넘버

메서드는 의미 체계를 설명하지 않고 많은 숫자로 계산합니다.

TL;DR: Avoid Magic numbers without explanation. We don't know their source and we are very afraid of changing then.



문제



  • 낮은 테스트 용이성
  • 낮은 가독성

  • 솔루션



    1) 상수 이름을 의미와 이름으로 바꿉니다(의미 있고 의도가 드러남).

    2) 외부에서 모의할 수 있도록 상수를 매개변수로 바꿉니다.

    3) 상수 정의는 종종 상수 (ab)사용자와 다른 개체입니다.


  • 알고리즘 하이퍼 매개변수

  • 샘플 코드



    잘못된




    <?
    
    function energy($mass) {
    
        return $mass * (300000 ^ 2);
    }
    

    오른쪽



    <?
    
    function energy($mass) {
    
        return $mass * (LIGHT_SPEED_KILOMETERS_OVER_SECONDS ^ 2);
    }
    

    발각



    많은 linter는 속성 및 메소드에서 숫자 리터럴을 감지할 수 있습니다.

    태그


  • 하드 코딩됨
  • 상수

  • 더 많은 정보


  • Refactoring Guru

  • 학점



    사진 제공: Kristopher Roller on Unsplash

    In a purely functional program, the value of a [constant] never changes, and yet, it changes all the time! A paradox!



    조엘 스폴스키






    이 기사는 CodeSmell 시리즈의 일부입니다.




    마지막 업데이트: 2021/05/31

    좋은 웹페이지 즐겨찾기