代码中的魔鬼数字
魔鬼数字的定义:在代码中没有具体含义的数字、字符串。
魔鬼数字主要影响了代码可读性,读者看到的数字无法理解其含义,从而难以理解程序的意图。当程序中出现的魔鬼数字过多时,代码的可维护性将会急剧下降,代码变得难以修改,并容易引入错误。
例如:
修改后:
例如:
int itemCount=10; // 这可以认为不是魔鬼数字 ,但应该有注释
int itemSize=5; // 这可以认为不是魔鬼数字 ,但应该有注释
// 一系列处理逻辑后
if ((storageManager.getCapacity() - itemCount*itemSize) < 1024){ //1024 是魔鬼数字
storageManager.expandCapacityBy(512); //512 是魔鬼数字
}
解决方案:
1、 将魔鬼数字定义为常量
例如,将:
storageManager.expandCapacityBy(512);
改成:
public static final int CAPACITY_INCREASE_STEP=512;
storageManager.expandCapacityBy(CAPACITY_INCREASE_STEP);
2、 将使用魔鬼数字的逻辑封装为方法,增加注释
例如,将:
if ((storageManager.getCapacity() - itemCount*itemSize) < 1024){
改成:
if ( storageManager.needIncreaseCapacity(itemCount,itemSize)){
boolean storageManager.needIncreaseCapacity(int itemCount,int itemSize){
return (storageManager.getCapacity() - itemCount*itemSize) < 1024;// 当剩余容量小于 1024 字节时,需要扩充空间。
}