天天看點

Clean-Code: 有意義的名字

最近在看Clean-Code(代碼整潔之道) 裡面有些内容還是不錯的,是以給大家分享下。

意思是說名稱和意思要一緻,更精确的說應該是看到名字就能想到意思。

對程式員來說取名通常是一件麻煩的事情,尤其是取一個好的名字。

這裡截取一段書中的代碼:

這段代碼有幾個”名不符實”的地方。

GetThem 是什麼意思,擷取他們?他們是什麼?

list1 是什麼,是一個臨時的變量?,還有更好的有意義的名字嗎?

for循環中的x是什麼意思?,學過譚浩強的C語言的同學基本上在for循環的代碼上都會使用 i ,j ,k ,x,y,z之類的變量,一般而言将這些變量更換為一個好的名字通常都是有百利而無一害的。

4是一個魔法數?為什麼是等于4,不是等于5什麼的?

我認為名副其實最重要的還是”看到名字就能自然而言想到意思”

意思是說名稱不會誤導别人,

例如取一個函數名字是ToLength32String(),但是最後傳回的string長度是33,31,不是32.那麼就有問題了。

在程式設計中最容易誤導的莫過于 0 和o, 1和l 了。

如果你的VS的設定字型是:

<a href="http://images.cnblogs.com/cnblogs_com/LoveJenny/201109/201109130623283806.png"></a>

那麼你會看到

<a href="http://images.cnblogs.com/cnblogs_com/LoveJenny/201109/201109130623308215.gif"></a>

很明顯的可以看到差別

意思是說名稱之間的差別要明顯。

例如Customer == CustomerObject == CustomerInfo

或者Name==NameString==NameData

是以在取名稱的時候,假設有一個方法叫做GetCustomer,那麼就 不應該出現GetCustomerInfo,GetCustomerData,GetCustomerObject 之類的方法了。

最經典的莫過于資料庫中的var1 ,var2,var3,var4…..之類的了,說得好聽點是保護代碼,難聽點就是坑爹之類的了。

匈牙利語标記法(Hungarian Notation,HN)

在Windows的C語言API的時代,HN非常重要,傳說HN是為了紀念具有傳奇色彩的微軟程式員Charles Simonyi。這種标記法比較簡單:即變量名以表明該變量資料類型的小寫字母開始。

例如szCmdLine的字首sz代表string end of zero.以0 結尾的字元串。

strPhone,代表Phone是字元串類型。

而今,大部分語言是強類型的,代碼編輯環境都已經先進到在編譯開始前就偵測到類型錯誤的程度!,是以HN和其他類似的格式編碼都多餘了。

<b>它們增加了修改變量,函數,或類的名稱或類型的難度。</b>

PhoneNumber phoneString;

//類型變化時,名稱并未變化。

很多程式員都喜歡短小精湛的名字,比如我,但是有時候短小精湛的名字被别人用了,無奈隻能取另一個名字。

縱觀大部分書籍上關于名字的長短介紹,都傾向于在名字意義明确的情況下,将名字長度盡量縮小,很多人都不喜歡長名字,比如:RenderPageWithSetupAndTeardowns。

這個名字就用了很多單詞Render,Page,With,Setup ,Teardowns.

但是意義卻是明确的,不會産生歧義,是以别害怕長名稱,長而具有描述性的名稱,要比短而令人費解的名稱好。

本文轉自LoveJenny部落格園部落格,原文連結:http://www.cnblogs.com/LoveJenny/archive/2011/09/13/2174334.html,如需轉載請自行聯系原作者

繼續閱讀