首頁»WEB綜合»編碼風格不是編碼規范

編碼風格不是編碼規范

來源:aqee 發布時間:2013-07-01 閱讀次數:

  我并不認為程序員是一個情緒特別豐富的群體。但有一些事情卻能很容易刺激程序員的神經,那就是代碼格式和布局。如果看到一個函數的括弧在同一行上沒有閉合,我的眼睛會噴血。如果看到有人沒有恰好的在兩個函數間留一空行,我的小腿會抽筋。但重點在這里——除非是在家里開發自己的業余愛好軟件,我的這些個人喜好其實是無關緊要的。同樣,作為一個團隊中的一員,你的個人編程喜好也應該放到一邊。

  編碼風格很容易會和編碼規范混為一談,因為這兩個詞經常會被人換著使用。我認為,編碼規范同時包括了編碼風格和其它規范,不僅僅指代碼格式。例如,像“返回成功/失敗的函數應該用一個整數作為返回值”,這樣的規則不屬于編碼風格。在這篇文章中,編碼風格簡單的指一個描述如何格式化代碼的說明。編碼風格中的規則通常會涉及到下面這些主題:

  • 縮進
  • 空格使用
  • Tab使用
  • 注釋
  • 命名習慣
  • 代碼行長度
  • 語言特點風格,例如是否使用可有可無的分號

  編碼風格都是為特定的編程語言制定的,可以把它們看作“我們共同的約定”。如果在你的公司里,在你在時,在這些事情正在制定完成,你可以提出你的喜好,那你是幸運。但通常情況是,一種編碼風格在其生命期里看著無數的程序員來了又走了。在我的眼里,遵守編碼風格有下面三個主要好處:

  1. 遵守編碼風格使代碼更容易維護

  今天由這個程序員實現的軟件,明天可能需要另外一個程序員維護。如果所有代碼中大家使用同一種編碼風格,這另外一個程序員快速的掃一眼陌生的代碼,就能根據大家約定的編程習慣,推斷出代碼的作用。如果編碼風格中指明常量應該全用大寫字母表示,那么,當看到一個全是大寫字母的變量時,你就能推斷出它是常量。同樣的,如果編碼風格中規定包的引入要有順序,那你立刻就能知道去哪里找這些包。這使得代碼很容易維護。

  2. 編碼風格使形成代碼集體所有制

  代碼集體所有制意味著全體程序員要負責所有代碼。集體所有制的作用很大,它能有效的增大巴士因子——一個項目能承受多少個程序員被車撞了而不影響項目的正常進行。在整個代碼庫中堅持延用一種常用的編碼風格,所以程序員都能更容易的理解、維護。

  相反,如果在一個大型的軟件項目中,每個程序員都使用自己的編碼風格,最終會引起一場維護版圖的戰爭,就像動物世界里我們的這些朋友:

氣味記號(也稱噴灑尿液或領土記號)是動物標記自己領土范圍的一種行為。通常是通過留下具有強烈氣味的物質來完成,很多時候是通過在領土中突出的物體上小便。-維基百科

  個人編碼風格就像是狗撒尿,留下自己的勢力記號。他們在代碼中留下自己的符號,在程序員之間創造壁壘。

  3. 編碼風格能消除那些長久的紛爭

  每個程序員都對編碼風格有強烈的自我認同。這種感覺深植于每個人的自負中,每當和同事遇到是否應該在關鍵詞周圍使用空格時,這種討論很容易升級而僵持不下。但是,靜下來想想——這真的無所謂。不管是不是在關鍵詞周圍使用了空格,只要能達成一致,大家都能從中獲得易維護和集體所有制的好處。在這種情況中,閉著眼睛,遵循一種編碼風格就行了。

  你不需要喜歡這種編碼風格。如果你不喜歡里面的某條規定,那就罵幾句這個文檔,只向文檔發脾氣,就像人類遷怒于上帝。然后還是按照約定做事。這樣做更具有建設性,比無休無止的吵論這些不重要的事情好的多。

  有了一套編碼風格并不一定會給你帶來好處——除非大家都遵守。有些時候,你并不一定需要手工去調整代碼。很多的程序編程器,例如Eclipse,能配置幫你格式化代碼,使其符合編碼風格。即使你的編輯器沒有這種功能,很多其它工具也能夠自動按照某種風格格式化一個文件。在我們的團隊中,我們使用 indent 和 uncrustify 工具。我還聽說過一些其它好東西,比如ReSharper。那些不能被自動實施的規則,例如命名習慣,可以在代碼審查的過程中落實。

  你有什么想法?你們團隊中采用了什么標準和約定?它們帶來了什么好處?請寫在評論里。我會很高興看到討論。

  英文原文:The conventions we follow

QQ群:WEB開發者官方群(515171538),驗證消息:10000
微信群:加小編微信 849023636 邀請您加入,驗證消息:10000
提示:更多精彩內容關注微信公眾號:全棧開發者中心(fsder-com)
網友評論(共0條評論) 正在載入評論......
理智評論文明上網,拒絕惡意謾罵 發表評論 / 共0條評論
登錄會員中心
大神带着买彩票 东乌珠穆沁旗| 密云县| 唐山市| 依安县| 华阴市| 凤冈县| 扎鲁特旗| 孝感市| 登封市| 夏邑县| 镇沅| 仙居县| 七台河市| 巩义市| 台中县| 朔州市| 郓城县| 信丰县| 灵山县| 隆安县| 寻甸| 南阳市| 霍山县| 宣恩县| 武定县| 沅江市| 罗定市| 鲁甸县| 安塞县| 武邑县| 临湘市| 柘荣县| 莎车县| 和田县| 介休市| 桂林市| 确山县| 佛冈县|