是否需要有代碼規範?
對于很多“程式猿”來說,都有着一套隻有自己才能看懂得代碼格式,相信每個人都存有自己的觀點。比如:
- 這些規範都是官僚制度下産生的浪費大家的程式設計時間、影響人們開發效率, 浪費時間的東西。
- 我是個藝術家,手藝人,我有自己的規範和原則。
- 規範不能強求一律,應該允許很多例外。
- 我擅長制定編碼規範,你們聽我的就好了。
按我個人的觀點來說,我是反駁以上說法的。首先我對于文本的書寫十分注重排版和美觀,我認為這就是自己一個“門面”,就像是人們常說的“字如其人”。再者,在軟體開發的整個生命同期中,均由最初的開發人員來維護的情況幾乎是沒有的。是以說讓我換位到程式維護這一方來考慮,當你面對眼前“一坨坨”的代碼,相信都會忍不住吐槽:“這一坨坨都是個啥@#¥%#¥……”,随後拂袖而去。
雖說吐槽聲有如滔滔洪水,但建一座堤壩便可将其截流。Yes!it is 代碼規範化。說起代碼規範,首先要了解其意義。
是用來管理代碼格式和風格的文檔和規範,要求公司内部統一規範,其中包括:命名規則(資料庫字段,表名,存儲結構名、函數、變量、檔案名等),每行字元數(編譯軟體每行顯示的字元數量,多少個字元換行),縮進的格式(tab還是四個空格),函數的代碼行數等内容。
代碼規範同時包括了編碼風格和其它規範,不僅僅指代碼格式。例如,像“傳回成功/失敗的函數應該用一個整數作為傳回值”,這樣的規則不屬于編碼風格。
(一)論代碼規範的重要性
- 促進團隊程序。對于一個團隊内進行協同開發,程式的維護和複查是全隊成員的工作,如果開發人員堅持個人風格進行編寫,很可能會造成整體進度和延後。
- 降低維護成本。一個軟體的生命周期中,80%的花費在于維護,規範的代碼可以減少編碼人員的了解時間,降低維護代價,易于進行二次開發。
- 可讀性增強。編碼規範可以改善軟體的可讀性,可以讓程式員盡快而徹底地了解新代碼。
- 便于産品的釋出。如果你将源碼作為産品釋出,需要按照規範,确認它是否被很好的打包并且清晰無誤。
(二)論代碼規範的實施性
- 代碼審查。會很大程度的改變程式猿們的編寫态度。如果你在程式設計,而且知道将會有同僚檢查你的代碼,那麼你寫出的代碼将更加整潔,有更好的注釋,更好的程式結構。因為你知道,那個你很在意的人将會檢視你的程式。沒有代碼審查,你知道人們最終還是會看你的程式。
- 基本的規範化制度。制度會限制堅持己見的人。
- 更正編寫習慣。盡早的改正自己的編寫習慣,将代碼規範化。
(三)論代碼規範的編寫指南
(1)排版規範
- 程式塊采用縮進,縮進空位為4個。
- 分解符如“{”和“}”獨占一行,并且位于同列。
- 較長的語句、表達式、參數要書寫多行。
- 一行隻寫一條語句。
- if,for,do,while,case,switch,default 獨占一行,且語句塊都要加“{ }”,無論語句多少。
- 相對獨立的業務語句塊之間,變量說明後加空行。
- 對齊隻用空格不用TAB,避免不同編輯器對TAB處理不同。
- 對二個以上的關鍵字、變量、常量進行對等操作時,變量前後必須留白格。
- 類屬性和方法不用交叉放置,不同存取範圍的屬性或方法也不遠交叉放置。
(2)注釋規範
- 有代碼的地方就有注釋,杜絕沒有任何注釋的代碼,推薦注釋量在20%以上。
- 包的注釋:在包的目前路徑放入一名為package.html的HTML檔案,方面JavaDoc收集。注釋内容簡述本包的作用、内容、産品子產品、版本、版權等,如:檔案注釋:檔案開始,package 關鍵字前面,記載版權說明、描述資訊、生成日期、修改曆史等。
- 類和接口的注釋:在package之後,class或interface之前,描述目前類或接口的功能,作者,生成日期,修改日志,版本号等。
- 類屬性、方法注釋:在類或方法的前面,類屬性記載屬性的功能用處,用/* 開頭描述注釋,放置JavaDoc收集;類方法注釋需要記載方法的功能簡述、詳細、輸入參數、輸出值、抛出的異常、作者等。
注意事項
- 包結構清晰,類、接口、方法、屬性命名貼切易懂。
- 該注釋的地方注釋,注釋清楚、易懂,沒有二義性。
- 接口定義明确,精确方法功能,每個方法隻實作一個功能。
- 方法内部的代碼行數控制在200行以内,一個類的代碼行數控制在1000行以内,如果你的類代碼在1000行以上,請重新思考設計思路,這裡說的代碼行數不把注釋計算在内。
- 多個方法内部如果有相似的功能代碼塊,應該提取為公用方法。
- 盡量将業務相近的方法放在一起,便于尋找。
- 方法内部盡量不要catch異常,讓外部調用者知道出錯細節。
- 方法内部對于對象參數的調用,盡量判斷非null引用,除非你的設計能保證非空對象。
- 不用的資料及時是否,如果資料庫連接配接、集合、共享鎖等。
- 不要使用技巧性比較高的表達式。
規範的代碼有利于幫助我們了解開發語言的架構,也能夠快速提升開發水準,是以更要注重基礎習慣的養成。
2016-3-22 1:27:44