一、前言
題外:昨天看了某知乎使用者的回答頗為感慨,大意是說現在主流是框架程式設計師越來越多,原理、架構、底層方面的越來越少;依賴框架快速出活的程式設計師工作機會比較多,公司招聘的時候也比較受歡迎。
不能說哪種優秀或者比較low。只要需要就必然有存在的價值,尤其是在快速迭代的今天,速度慢半拍可能就意味著淘汰。
今天說命名可閱讀的程式碼。
二、可閱讀的程式碼
寫程式就像建造一棟高樓,包括方方面面,羅馬不是一天建成的。軟體開發領域,強調命名的重要性至今都不過時。程式碼開發階段在大部分應用程式生命週期中佔比都是很小的一個階段,維護階段是一個大頭,後來的人員需要閱讀你的程式碼<也可能包括未來的你>才能完成工作。很多時候,維護運營階段閱讀前人的程式碼,或者自己以前的程式碼會有一個感覺一個頭兩個大。
什麼是好的命名,沒有固定答案,不過有一個原則就是:遵循團隊或者專案的命名規範,如果團隊或者專案還沒有統一的命名規範,首先去建立她,然後貫徹到底。相信百分之九十九的組織都有自己的命名規範。
關於註釋也在存在爭議,有的組織規定程式碼不能存在註釋,有的組織要求必須寫註釋。優劣沒有定論,不過好的命名可以是“自注釋”,可以明確傳達程式碼意圖,描述邏輯。統一的命名規則可以使整個團隊保持一致。
三、命名的一些實踐
1、名字完整準確的表達其所代表的的含義、名字反應實際問題、名字“足夠長”、限定詞放在名字最後、
2、避免縮寫或對縮寫進行統一約定、使用約定對仗詞<begin/end、min/max、up/down>等、使用有意義的迴圈下標
3、命名規則能夠區分類名、常量、列舉、變數
以上簡單羅列,更多實踐,Google 一下。
四、一些例子
1、常見的多層結構中:業務邏輯層,IxxService、xxService ;資料訪問層,IxxDao 、xxDao 等,當然每個組織可能不一樣
2、模式語言 xxFactory 、xxObserver、xxSingleton 等
3、.Net Framework 中API
4、程式碼片段
string add; // person address int a; // person age string address; int age;
五、總結&推薦閱讀
強調命名是一個古老的話題,但是從來都不過時。最後用一個問答,強調一下命名的重要性。
問:如何寫出可閱讀的程式碼,自注釋程式碼? 答:遵循良好的命名實踐。
推薦閱讀:
1、《Code Complete》第11章 The Power Of Variable Names
2、How To Write Unmaintainable Code : https://github.com/Droogans/unmaintainable-code
3、阿里《Java 開發手冊》 https://github.com/alibaba/p3c