マジックナンバーを避けるために、リテラルに意味のある名前を付ける必要があるとよく耳にします。といった:
//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ドルを費やしていると思いますが、複数の人がいる場合、水と食べ物を買う必要があります。コードを変更します。リテラル1に注目してください。それについての質問です。
public int getMoneyByPersons(){
if(persons.size() == 1){
// TODO - return money for one person
} else {
// TODO - calculate and return money for people.
}
}
友達にコードをレビューするように頼んだとき、1人は値1に名前を付けるときれいなコードが得られると言い、もう1人は値が意味があるのでここに定数名は必要ないと言った。
したがって、私の質問は、リテラル値1に名前を付ける必要がありますか?値はいつ魔法の数であり、そうでないのですか?コンテキストを区別して最適なソリューションを選択するにはどうすればよいですか?
if(getErrorCode().equals(4095)) ...
persons
から来て、何を説明していますか?コードにはコメントがまったくないため、コードの実行内容を推測するのは困難です。