Clean-Code: 有意義的名字

 

Clean-Code: 有意義的名字

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

 

名副其實:

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

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

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

public List<int[]> GetThem()
{
    List<int[]> list1 = new List<int[]>();
    for(int[] x in theList)
    {
        if(x[0]==4)
            list1.Add(x);
    }
    return list1;
}

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

  1. GetThem 是什麼意思,獲取他們?他們是什麼?
  2. list1 是什麼,是一個臨時的變量?,還有更好的有意義的名字嗎?
  3. for循環中的x是什麼意思?,學過譚浩強的C語言的同學基本上在for循環的代碼上都會使用 i ,j ,k ,x,y,z之類的變量,一般而言將這些變量更換爲一個好的名字通常都是有百利而無一害的。
  4. 4是一個魔法數?爲什麼是等於4,不是等於5什麼的?

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

 

避免誤導:

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

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

在編程中最容易誤導的莫過於 0 和o, 1和l 了。

如果你的VS的設置字體是:

image

那麼你會看到

clip_image004

很明顯的可以看到區別

 

做有意義的區分:

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

例如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和其他類似的格式編碼都多餘了。

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

PhoneNumber phoneString;

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

 

名字的長短:

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

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

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

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

作者:LoveJenny     
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
分類: C#
發佈了26 篇原創文章 · 獲贊 6 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章