众所周知,应该避免使用神秘数字。但是对于复杂的条件公式中的神秘数字呢?例如:
int result = 0;
if (level <= 50) {
result = (int) (Math.pow(level, 3) * (100 - level) / 50);
}
else if (level <= 68 && level > 50) {
result = (int) (Math.pow(level, 3) * (150 - level) / 100);
}
else if (level <= 98 && level > 68) {
result = (int) (Math.pow(level, 3) * ((1911 - 10 * level) / 3) / 500);
}
else if (level < 100 && level > 98) {
result = (int) (Math.pow(level, 3) * (160 - level) / 100);
}
return result;
在这种情况下,仅仅说“在可能的情况下避免魔法数字”是否更好?我也在使用Eclipse中的CheckStyle来帮助我找出可能会错过实际魔法数字的地方。然而,没有办法禁用某些数字的检查而不禁用其他数字的检查。
1911 - 10 * level
等等。1911是什么?68又是什么?没有人知道。 - Konstantin V. Salikhov