마법의 숫자를 피하기 위해 문자 그대로 의미있는 이름을 부여해야한다는 말을 자주 듣습니다. 같은 :
//THIS CODE COMES FROM THE CLEAN CODE BOOK
for (int j = 0; j < 34; j++) {
s += (t[j] * 4) / 5;
}
-------------------- Change to --------------------
int realDaysPerIdealDay = 4;
const int WORK_DAYS_PER_WEEK = 5;
int sum = 0;
for (int j = 0; j < NUMBER_OF_TASKS; j++) {
int realTaskDays = taskEstimate[j] * realDaysPerIdealDay;
int realTaskWeeks = (realdays / WORK_DAYS_PER_WEEK);
sum += realTaskWeeks;
}
다음과 같은 더미 방법이 있습니다.
설명한다 : 나는 사람들에게 봉사 할 명단을 가지고 있다고 가정하고 기본적으로 우리는 음식 만 구매하기 위해 5 달러를 소비하지만, 한 명 이상이있을 때 물과 음식을 사야한다면 더 많은 돈을 소비해야한다. 아마도 6 달러가 될 것이다. 코드를 변경 하고 리터럴 1에 집중 하십시오.
public int getMoneyByPersons(){
if(persons.size() == 1){
// TODO - return money for one person
} else {
// TODO - calculate and return money for people.
}
}
친구에게 내 코드를 검토하도록 요청했을 때 하나는 값 1의 이름을 지정하면 더 깨끗한 코드가 생성된다고 말하고 다른 하나는 값 자체가 의미가 있기 때문에 상수 이름이 필요하지 않다고 말했습니다.
그래서 내 질문은 리터럴 값 1의 이름을 지정해야합니까?입니다. 값은 언제 마법의 숫자입니까? 최상의 솔루션을 선택하기 위해 컨텍스트를 어떻게 구별 할 수 있습니까?
if(getErrorCode().equals(4095)) ...
persons
에서 왔으며 무엇을 설명합니까? 코드에는 주석이 없으므로 수행중인 작업을 추측하기가 어렵습니다.