魔鬼数字
代碼中的魔鬼數(shù)字
?
魔鬼數(shù)字的定義:在代碼中沒(méi)有具體含義的數(shù)字、字符串。
?
魔鬼數(shù)字主要影響了代碼可讀性,讀者看到的數(shù)字無(wú)法理解其含義,從而難以理解程序的意圖。當(dāng)程序中出現(xiàn)的魔鬼數(shù)字過(guò)多時(shí),代碼的可維護(hù)性將會(huì)急劇下降,代碼變得難以修改,并容易引入錯(cuò)誤。
?
例如:
修改后:
例如:
int itemCount=10;????????????????? // 這可以認(rèn)為不是魔鬼數(shù)字 ,但應(yīng)該有注釋
?????? int itemSize=5;??????????????????? // ? 這可以認(rèn)為不是魔鬼數(shù)字 ,但應(yīng)該有注釋
?????? // 一系列處理邏輯后
?????? if ((storageManager.getCapacity() - itemCount*itemSize) < 1024){?? //1024 是魔鬼數(shù)字
?????????? storageManager.expandCapacityBy(512);???? //512 是魔鬼數(shù)字
???? }
?
解決方案:
1、?? 將魔鬼數(shù)字定義為常量
例如,將:
storageManager.expandCapacityBy(512);
改成:
public static final int CAPACITY_INCREASE_STEP=512;
storageManager.expandCapacityBy(CAPACITY_INCREASE_STEP);
?
2、?? 將使用魔鬼數(shù)字的邏輯封裝為方法,增加注釋
例如,將:
if ((storageManager.getCapacity() - itemCount*itemSize) < 1024){
改成:
if ( storageManager.needIncreaseCapacity(itemCount,itemSize)){
?
boolean storageManager.needIncreaseCapacity(int itemCount,int itemSize){
??? return (storageManager.getCapacity() - itemCount*itemSize) < 1024;// 當(dāng)剩余容量小于 1024 字節(jié)時(shí),需要擴(kuò)充空間。
}
?
總結(jié)
- 上一篇: RFID 应用
- 下一篇: GHOST8.2文图教程备份恢复工具