編碼風格不是編碼規範
我並不認爲程序員是一個情緒特別豐富的羣體。但有一些事情卻能很容易刺激程序員的神經,那就是代碼格式和佈局。若是看到一個函數的括弧在同一行上沒有閉合,個人眼睛會噴血。若是看到有人沒有剛好的在兩個函數間留一空行,個人小腿會抽筋。但重點在這裏——
除非是在家裏開發本身的業餘愛好軟件,個人這些我的喜愛實際上是可有可無的。一樣,做爲一個團隊中的一員,你的我的編程喜愛也應該放到一邊。
編碼風格很容易會和編碼規範混爲一談,由於這兩個詞常常會被人換着使用。我認爲,
編碼規範同時包括了編碼風格和其它規範,不只僅指代碼格式。
例如,像「返回成功/失敗的函數應該用一個整數做爲返回值」,這樣的規則不屬於編碼風格。在這篇文章中,編碼風格簡單的指一個描述如何格式化代碼的說明。
編碼風格中的規則一般會涉及到下面這些主題:
- 縮進
- 空格使用
- Tab使用
- 註釋
- 命名習慣
- 代碼行長度
- 語言特色風格,例如是否使用無關緊要的分號
編碼風格都是爲特定的編程語言制定的,能夠把它們看做「咱們共同的約定」。若是在你的公司裏,在你在時,在這些事情正在制定完成,你能夠提出你的喜愛,那你是幸運。但一般狀況是,一種編碼風格在其生命期裏看着無數的程序員來了又走了。
在個人眼裏,遵照編碼風格有下面三個主要好處:
1. 遵照編碼風格使代碼更容易維護
今天由這個程序員實現的軟件,明天可能須要另一個程序員維護。若是全部代碼中你們使用同一種編碼風格,這另一個程序員快速的掃一眼陌生的代碼,就能根據你們約定的編程習慣,推斷出代碼的做用。若是編碼風格中指明常量應該全用大寫字母表示,那麼,當看到一個全是大寫字母的變量時,你就能推斷出它是常量。一樣的,若是編碼風格中規定包的引入要有順序,那你馬上就能知道去哪裏找這些包。這使得代碼很容易維護。
2. 編碼風格使造成代碼集體全部制
代碼集體全部制意味着全體程序員要負責全部代碼。集體全部制的做用很大,它能有效的增大
巴士因子
——一個項目能承受多少個程序員被車撞了而不影響項目的正常進行。在整個代碼庫中堅持延用一種經常使用的編碼風格,因此程序員都能更容易的理解、維護。
相反,若是在一個大型的軟件項目中,每一個程序員都使用本身的編碼風格,最終會引發一場維護版圖的戰爭,就像動物世界裏咱們的這些朋友:
氣味記號(也稱噴灑尿液或領土記號)是動物標記本身領土範圍的一種行爲。一般是經過留下具備強烈氣味的物質來完成,不少時候是經過在領土中突出的物體上小便。-
維基百科
我的編碼風格就像是狗撒尿,留下本身的勢力記號。
他們在代碼中留下本身的符號,在程序員之間創造壁壘。
3. 編碼風格能消除那些長久的紛爭
每一個程序員都對編碼風格有強烈的自我認同。這種感受深植於每一個人的自負中,每當和同事遇到是否應該在關鍵詞周圍使用空格時,這種討論很容易升級而僵持不下。可是,靜下來想一想——這真的無所謂。不論是不是在關鍵詞周圍使用了空格,只要能達成一致,你們都能從中得到易維護和集體全部制的好處。在這種狀況中,閉着眼睛,遵循一種編碼風格就好了。
你不須要喜歡這種編碼風格。若是你不喜歡裏面的某條規定,那就罵幾句這個文檔,只向文檔發脾氣,就像人類遷怒於上帝。而後仍是按照約定作事。這樣作更具備建設性,比無休無止的吵論這些不重要的事情好的多。
有了一套編碼風格並不必定會給你帶來好處——除非你們都遵照。
有些時候,你並不必定須要手工去調整代碼。不少的程序編程器,例如
Eclipse
,能配置幫你格式化代碼,使其符合編碼風格。即便你的編輯器沒有這種功能,不少其它工具也可以自動按照某種風格格式化一個文件。在咱們的團隊中,咱們使用
indent
和
uncrustify
工具。我還據說過一些其它好東西,好比
ReSharper
。那些不能被自動實施的規則,例如命名習慣,能夠在代碼審查的過程當中落實。
你有什麼想法?大家團隊中採用了什麼標準和約定?它們帶來了什麼好處?請寫在評論裏。我會很高興看到討論。
英文原文:
The conventions we follow
/ 譯:
外刊IT評論
歡迎關注本站公眾號,獲取更多信息