攻城獅之編碼規範

 作為軟件開發者,我們在追求效率的同時,絕不應該犧牲軟件項目的質量。優秀的編碼規範,是質量保證的前提。好的編碼規範的養成,對提高開發效率來說也是有目共睹的。

攻城獅之編碼規範

  編碼規範已經成為一個老生常談的問題,幾乎每個項目,每家公司都會定義自己的編碼規範。但在真正實施時,卻在有意或無意地違背編碼規範。程序員,不喜歡改變自己的編程習慣。加之,管理者對質量控制不足,導致編碼規範往往形同虛設。有些人會認為:遵守編碼規範不能給項目帶來利益,也不能讓客戶看到我們為此付出的努力,其完全是團隊自發的行為,沒有必要做硬性的要求。還有些人有更好的理由:編碼規範會破壞創造性和程序質量。我認為,編碼規範,在軟件構件以及項目管理中,甚至是個人成長方面,都發揮著重要的作用,好的編碼規範是提高我們代碼質量的最有效的工具之一。

攻城獅之編碼規範

一 編碼規範的作用

  • 提高可讀性 “任何一個傻瓜都能寫出計算機可以理解的代碼,唯有寫出人類容易理解的代碼,才是優先的程序員。”編碼規範,幫助我們寫出人類容易理解的代碼,它為我們提供了最基本的模板,良好的編碼風格,使代碼具有一定的描述性,可以通過名字來獲取一些需要IDE才能得到的提示,如可訪問性、繼承基類等。

  • 統一全局,促進團隊協作 開發軟件是一個團隊活動,而不是個人的英雄主義。編碼規範,要求團隊成員遵守這一統一的全局決策,這樣成員之間可以輕鬆地閱讀對方的代碼,所有成員正以一種清晰而一致的風格進行編碼。而且,開發人員也可以集中精力關注他們真正應該關注的問題——自身代碼的業務邏輯,與需求的契合度等局部問題。

  • 有助於知識傳遞,加快工作交接 風格的相似性,能讓開發人員更迅速,更容易理解一些陌生的代碼,更快速地理解別人的代碼。因為,他和你的代碼風格是一樣的,你沒有必要對他的一些個性化風格進行揣測。這樣的好處是開發人員可以很快的接手項目組其他成員的工作,快速完成工作交接。

  • 減少名字增生,降低維護成本 在沒有規範的情況下,和容易為同一類型的實例起不同的名字。對於以後維護這些代碼程序員來說會產生疑惑。

  • 強調變量之間的關係,降低缺陷引人的機會 命名可以表示一定的邏輯關係,是開發人員在使用時保持警惕,從而一定程度上減少缺陷被引人的機會。

  • 提高程序員的個人能力 不可否認,每個程序員都應該養成良好的編碼習慣,而編碼規範無疑是教材之一。從一個程序員的代碼本身能看出很多東西。所以,即便是為了自身發展,作為程序員也沒有理由抵制這種規則的存在。你可能沒有認識到,我們正默默地得益於編碼規範。

二 編碼規範是一種約定

在高質量的軟件中,你可以看到“架構的概念完整性”與“底層實現”之間的關係。“實現”與“架構”必須是清晰一致的,這種內在的、固有的一致性,需要編碼規範來維繫。如果沒有這種統一的約定,那麼我們做出的東西可能會充斥著各種不同的風格,顯得混亂且難以理解。團隊成員之間可能很不理解彼此之間的想法,甚至是相互抨擊。各種編碼風格上的差異會不斷擴大,而代碼質量則不斷下降。而且,團隊成員會花費時間在理解不同編程風格之間的差異,而沒有專注於真正應該解決的問題。這樣的時間消耗是難以接受的。所以,在每一個高質量代碼的背後,一定存在著一份優秀的編碼規範。

  編碼規範僅僅是一個全局性質的規範,它只不過是一種編程約定,不能解決更深層次的問題。就像一篇格式漂亮但內容糟糕的論文不能被髮表一樣,你不能僅靠一個規範來擺脫軟件作坊。而且,在編碼規範中不宜包含那些冗長的開發技巧。我認為,對於代碼是最佳實踐應該是代碼審查所要解決的,應該避免將編碼規範寫成一部關於重構的教科書。

三 編寫編碼規範的一些建議

以下是我對定義編碼規範的一些建議:

  • 求同存異 不要妄圖改變組織的編碼習慣,除非有絕對合理的理由,否則還是以民主為主,畢竟你沒有權利要求所有人都沿用你的編碼習慣。

  • 定義編碼規範越早越好 也早使用編碼規範,也早享受其帶來的好處。

  • 將規範分為強制部分和推薦部分 求同存異的具體實現。將最基本的規範列放在強制部分,所有成員必須遵守;將好的但不重要的習慣列在推薦部分,開發人員可以根據自己習慣選擇是否使用。

  • 編碼規範不要太長

    太長的文檔沒人看,所有人都一樣,除了禮品單和工資單沒人願意看長的東西,所以編碼規範必須精煉,最好是隻有2~3頁,讓開發人員可以打印出來隨時查看。

  • 必須是約定俗成的 規範必須是行業中約定俗成的,不要有什麼個性化發揮。

編碼規範可以參考《阿里巴巴Java開發手冊(終極版)》

攻城獅之編碼規範

下載地址:https://pan.baidu.com/s/1c1UQM7Q


分享到:


相關文章: