최근 프로젝트에, 나는 바이트로 변환하는 데 필요한 킬로바이트의 키비 바이트 . 코드는 간단했다 :
var kBval = byteVal / 1024;
그것을 작성한 후, 나머지 기능이 작동하고 진행되었습니다.
그러나 나중에 코드에 마법 번호를 삽입했는지 궁금해하기 시작했습니다 . 내 일부는 숫자가 고정 상수이므로 쉽게 이해해야하기 때문에 괜찮다고 말합니다. 그러나 내 다른 부분은 정의 된 상수에 싸여 있으면 명확했을 것이라고 생각합니다 BYTES_PER_KBYTE
.
상수로 잘 알려진 숫자가 실제로 마법과 같은 것이 아닌가?
관련 질문 :
숫자는 마법의 숫자는 언제입니까? 그리고 코드의 모든 번호는 "매직 넘버"으로 간주되어 있습니까? -비슷하지만 내가 묻는 것보다 훨씬 광범위한 질문입니다. 내 질문은 그 질문에서 다루지 않은 잘 알려진 상수에 중점을 둡니다.
매직 넘버 제거 : 언제 "아니오"라고 말할 때입니까? 또한 관련이 있지만 상수가 마법의 숫자인지 아닌지에 대한 리팩토링에 중점을 둡니다.
1024
그렇지 않으면 개발자 팀이 "kilobytes"또는 "kibibytes"에 대해 논쟁하는 데 모든 시간을 할애하기 때문에 확실히 사용 하십시오.
#define
KIBI
, 1024 MEBI
* 1024 1024 ...
ZERO=0, ONE=1, TWO=2
프로그램이 다른 언어로 포팅 될 때 (또는 프로그래머가 언어를 전환 할 때 동작을 변경하지 않는 등) 상수가 표시 될 것입니다. 또한 해당 언어를 볼 수 있으며 누군가가 변경하지 않도록 기도 해야합니다 ONE=2
.
FOUR_HUNDRED_FOUR = 404
. 리터럴 대신 상수 문자열을 사용하는 데 익숙한 또 다른 프로젝트를 진행 했으므로 코드에 수십 줄이 생겼습니다.DATABASE = "database"