神仙數 是指在程式異或是工程中出現的常數
比如你在寫一個9宮的C++程式,你定義了一個數組int map[3][3],後來在程式中不斷出現3和9這樣的字眼
但是如果我想擴展呢,想把9宮擴展成為16或是25或是縮小為4宮呢
比如我現在想擴展成為16宮,這樣的話我就得把程式中所有的3改為4,所有的16改為9,很顯然會比較麻煩
或許有些人會說,我可以用替換功能搜尋所有的3替換為4,9替換為16,確實,對於這個簡單程式是可以在30秒之內用這種方法解決,
但是如果是一個很大很大的工程呢,我們還是替換所有的要改的數字如2替換為3嗎,結果22變成33了,變數a2b變為了a3b
所以為了避免以後維護和修改帶來的麻煩,在程式中應該儘量避免出現神仙數
可以使用const定義一個變數代替該常數,修改的時候只需修改const變數的值即可
比如對於9宮定義
const int MAPWIDTH = 3;
const int MAPTOTAL = 9;
最終要擴展為16宮的時候,只需要將上面的語句改為
const int MAPWIDTH = 4;
const int MAPTOTAL = 16;
即可
而且對於出現在工程中的常數,當別人或者是日後維護的時候碰到,會覺的這個常數莫名其妙,猜不到是什麼意思
比如你碰見了3,那么這個3代表什麼呢,是寬度,總數,基數還是其他的什麼含義
所以用const定義一個含義比較清晰地變數,使其值為3,如上面的MAPWIDTH
在原來是3的地方現在是MAPWIDTH,我們就很容易想到寬度了啦