造夢西游3代碼怎么用 代碼怎么用( 二 )


提防使用外形相似度較高的名稱 。例如,想區分模塊中某處的XYZControllerFor-EfficientHandlingOfStrings和另一處的XYZControllerForEfficientStorage-OfStrings,會花多長時間呢?這兩個詞的外形實在太相似了 。
以同樣的方式拼寫出同樣的概念才是信息 。拼寫前后不一致就是誤導 。我們很享受現代Java編程環境的自動代碼完成特性 。鍵入某個名稱的前幾個字母,按一下某個熱鍵組合(如果有的話),就能得到一列該名稱的可能形式 。
假如相似的名稱依字母順序放在一起,且差異很明顯,那就會相當有助益,因為程序員多半會壓根不看你的詳細注釋,甚至不看該類的 *** 列表就直接看名字挑一個對象 。
誤導性名稱真正可怕的例子,是用小寫字母l和大寫字母O作為變量名,尤其是在組合使用的時候 。當然,問題在于它們看起來完全像是常量“壹”和“零” 。
int a = l;if (O == l)a = O1;elsel = 01;
讀者可能會認為這純屬虛構,但我們確曾見過充斥這類名稱的代碼 。有一次,代碼作者建議用不同字體寫變量名,好顯得更清楚些,但前提是這種方案得要通過口頭和書面傳遞給未來所有的開發者才行 。后來,只是做了簡單的重命名操作,就解決了問題,而且也沒引起別的問題 。
— 03 —
做有意義的區分
如果程序員只是為滿足編譯器或解釋器的需要而寫代碼,就會制造麻煩 。例如,因為同一作用范圍內兩樣不同的東西不能重名,你可能會隨手改掉其中一個的名稱,有時干脆以錯誤的拼寫充數,結果就會出現在更正拼寫錯誤后導致編譯器出錯的情況 。

造夢西游3代碼怎么用  代碼怎么用

文章插圖

光是添加數字系列或是廢話遠遠不夠,即便這足以讓編譯器滿意 。如果名稱必須相異,那么其意思也應該不同才對 。
【造夢西游3代碼怎么用代碼怎么用】以數字系列命名(a1、a2…aN)是依義命名的對立面 。這樣的名稱純屬誤導——完全沒有提供正確信息,沒有提供導向作者意圖的線索 。試看:
public static void copyChars(char a1[], char a2[]) {for (int i = 0; i < a1.length; i++) {a2[i] = a1[i];}}
如果參數名改為source和destination,這個函數就會像樣許多 。
廢話是另一種沒意義的區分 。假設你有一個Product類,如果還有一個名為ProductInfo或ProductData的類,那它們的名稱雖然不同,意思卻無區別 。Info和Data就像a、an和the一樣,是意義含混的廢話 。
注意,只要體現出有意義的區分,使用a和the這樣的前綴就沒錯 。例如,你可能把a用在域內變量,而把the用于函數參數[5] 。但如果你已經有一個名為zork的變量,又想調用一個名為theZork的變量,麻煩就來了 。
廢話都是冗余 。variable一詞永遠不應當出現在變量名中 。table一詞永遠不應當出現在表名中 。NameString會比Name好嗎?難道Name會是一個浮點數?如果是這樣,就違反了關于誤導的規則 。
設想有一個名為Customer的類,還有一個名為CustomerObject的類,它們的區別何在呢?哪一個是表示客戶歷史支付情況的更佳方式?
有一個應用反映了這種狀況 。為當事者諱,我們改了一下,不過犯錯的代碼的確就是這個樣子:
getActiveAccount(); getActiveAccounts(); getActiveAccountInfo();程序員怎么知道該調用哪個函數呢?
如果缺少明確約定,那么變量moneyAmount與money就沒區別,customerInfo與customer沒區別,accountData與account沒區別,theMessage也與message沒區別 。要區分名稱,就要以讀者能鑒別不同之處的方式來區分 。
— 04 —
使用讀得出來的名稱
人類長于記憶和使用單詞 。大腦的相當一部分就是用來容納和處理單詞的 。單詞能讀得出來 。人類的大腦中有那么大的一塊地方用來處理言語,若不善加利用,實在是種恥辱 。
如果名稱讀不出來,討論的時候就會像個傻鳥 。“哎,這兒,鼻涕阿三喜摁踢(bee cee arr three cee enn tee)[6]上頭,有個皮挨死極翹(pee ess zee kyew)[7]整數,看見沒?”這不是小事,因為編程本就是一種社會活動 。
有一家公司,程序里面寫了一個genymdhms(生成日期,年、月、日、時、分、秒),他們一般讀作“gen why emm dee aich emm ess”[8] 。我有見字照拼讀的惡習,于是開口就念“gen-yah-mudda-hims” 。
后來好些設計師和分析師都有樣學樣,聽起來傻乎乎的 。我們知道典故,所以會覺得很搞笑 。搞笑歸搞笑,實際是在強忍糟糕的命名 。在給新開發者解釋變量名的意義時,他們總是讀出傻乎乎的自造詞,而非恰當的英語詞 。比較

推薦閱讀