軟件架構————如何寫好變量(2)

變量名的力量

最重要的命名注意事項

爲變量命名時最重要的考慮事項是,該名字要完全、準確地描述出該變量所代表的事務。獲得好名字的一種是用技巧就是用文字表達變量所代表的是什麼。通常,對變量的描述就是最佳變量名。這種名字很容易閱讀,因爲其中並不包含晦澀的縮寫,同時也沒有歧義。因爲它是對該事物的完整描述,因此不會和其他事物混淆。


以問題爲導向

一個好的名字反應的通常都是問題,而不是解決方案。好的名字通常表達的是“什麼what”,而不是“如何how”。一般而言,如果一個名字反映了計算的某些方面而不是問題本身,那麼它反應的就是“如何how”而不是“什麼what”了。避免這樣的命名,而該名字中反映出問題的本身。


最適當的名字長度

一般變量名平均長度在10到16個字符的時候,調試程序比較容易。這個原則並不是嚴格限制變量名的長度,而是強調在查看自己寫的代碼時發現了很多更短的名字,那麼需要認真檢查,確保這些名字含義足夠清晰。


作用域對變量名的影響

短的變量名不是總是不好的,當把一個變量名取得很短的時候,如i,這一長度本身就對該變量做出了一些說明,也就是說,該變量代表的是一個臨時的數據,它的作用域非常有限。

較長的名字適用於很少用到的變量或者全局變量,而較長的名字則適用於局部變量或者循環變量。

對位於全局命名空間中的名字加以限定詞,如果在全局變量空間中定義了一些變量,那麼請考慮是否需要採用某種方式對全局變量命名空間進行劃分,避免產生命名衝突。


變量名中的計算值限定詞

如果用類似於Total、Sum、Average、Max、Min、Record、String、Pointer這樣的詞來修改某個名字,那麼最好把這些限定詞放在名字的後面。

這種方法的優勢在於:變量名中最重要的部分主要含義在前,這一部分就會顯得很突出,首先被閱讀到。其次,這樣可以防止歧義,同一命名規則。


爲特定類型的數據命名

爲循環下表命名

如果一個變量要在循環之外使用,那麼就應該爲它去一個比i,j或者k更有意義的名字。如果循環不是隻有幾行,那麼讀者會很容易忘記i本來的含義,因此最好給循環下標換一個更有意義的名字。


爲狀態變量命名

爲狀態變量去一個比flag這種名字更好的名字,最好把標記看做狀態變量。標記應該用枚舉、具名常量的全局變量來對其賦值,而且其值應該與上面這些變量做出比較。


爲臨時變量命名

臨時變量作用域存儲計算的中間結果,作爲臨時站位符,以及存儲內務管理值。他們常被賦予temp、x或者其他一些模糊缺乏描述性的名字。通常,臨時變量是一個信號,表明程序員還沒有完全把問題弄清楚。


爲布爾變量命名

典型的布爾命名:done表示時間已經完成,error表示有錯誤發生,found表示某個值已經找到,success或者ok表示操作是否完成。

給布爾變量賦予隱含“真/假”含義的名字比如像典型布爾命名的方法。但是像isDone這種命名方法不怎麼要,它的缺點之一就是降低了簡單的邏輯表達式的可讀性:if(isDone)的可讀性要略差於if(Done).


爲枚舉類型命名

在使用枚舉類型的時候,可以通過使用組前綴來明確表示該類型的成員都同屬於一個組如color_,month_等。


爲常量命名

在具名常量時,應該根據該常量所表示的含義,而不是該常量所具有的數值爲該抽象事物命名。


應該避免的名字

1.避免使用令人誤解的名字或縮寫

2.避免使用具有相似含義的名字

3.避免使用具有不同含義但卻有相似名字的變量

4.避免使用發音相似的名字,比兔wrap和rap

5.避免在名字中使用數字,如file1,file2

6.避免在名字拼錯單次

7.避免使用英語中常常拼錯的單次

8.不要僅靠大小寫來區分變量名,因爲有的語言不區分大小寫,而且也容易難以理解類名稱和實體名之間的區別。

9.避免使用多種自然語言,一個項目中應該統一一種語言,而不是百花齊放,這樣的程序難以區分,而且會引起歧義

10.避免使用標準類型、變量和子程序名稱的名字

11.不要使用與變量含義完全無關的名字

12.避免在名字中包含容易混淆的字符如小寫的l和1,數字2和z扥等。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章