在计算机编程中,“魔术数字”(magic number)是一个没有明确含义或上下文解释的特定数值。它直接硬编码在代码中,而不是通过变量、常量或者计算得出,这使得代码的可读性和可维护性降低。魔术数字的存在使得其他开发者在阅读代码时难以理解该数值的具体用途或它代表的意义,特别是当这个数字被多次使用但没有注释说明时。
例如,在判断年份是否为闰年的代码中直接出现if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0))
,这里的4
、100
和400
就是魔术数字。更好的做法是将这些数字定义为有意义的常量,如:
final int years_per_century = 100;
final int leap_year_divisible_4 = 4;
final int leap_year_exception = 100;
final int leap_year_divisible_400 = 400;
if (year % leap_year_divisible_4 == 0 && (year % leap_year_exception != 0 || year % leap_year_divisible_400 == 0)) {
// 是闰年
}
这样不仅提高了代码的可读性,也便于日后的维护和修改。