天天看點

是否需要有代碼規範?

     一位來自知乎的朋友這樣說道:

     有一次我被臨時借調到另外一個項目組,去幫忙趕一個需求。寫代碼的時候我犯了一個我職業生涯以來最蠢的錯誤,就是按自己的配置對代碼做了格式化。

全部寫完并送出代碼後的那天中午我去醫院了。下午接了那個項目組組長一個電話,問我送出的代碼做了哪些改動。我報了幾個路徑,并告訴了他我的修改标記。

第二天到公司後,組長告訴我因為我的代碼格式與組内規範不一樣,導緻合并測試版本的時候,幾乎每行都有差異。版本管理者不得不一行一行對比、詢問該使用哪個版本、然後再合并、送出測試。

     這次送出不到十個檔案,目測實際改動的代碼行數不超過100行,但是害的版本管理者從下午兩點多一直幹到六點多才合并完版本。這還是在我每一處修改都有修改标記的情況下花費的時間。順帶,這個“修改标記”也是我們的規範之一。

我想這個例子能夠說明不遵守規範的問題,和遵守規範的好處了吧。

是以對我來說:

1、這些規範都是官僚制度下産生的浪費大家的程式設計時間、影響人們開發效率, 浪費時間的東西。

也許規範對個人的開發效率會有負面影響。但是放到整個團隊層面上,它恰恰是能夠節約大家的程式設計時間的東西。那個版本管理者花費的三、四個小時,本來可以用來測試、用來修正bug,卻因為我的代碼不規範而被浪費掉了。

2、我是個藝術家,手藝人,我有自己的規範和原則。

一個人的那也叫規範?最多叫個人習慣。足球裡有一句話,沒有哪個球員比球隊更重要。項目組也一樣,沒有哪個人的個人習慣大過團隊規範。

就我那個錯誤來說,我也有我的規範和原則。事實上,我犯錯誤的那次所使用的格式化規範,也是我原來所在 項目組的通用規範。但是,在新的項目組裡,它變成了我的個人習慣,并且,我的個人習慣導緻團隊工作受到了嚴重的影響。如果你是那個新項目組的成員,你能忍我?

3、規範不能強求一律,應該允許很多例外。

規範應該盡量一緻;即使有例外,也隻能是少數情況,而不能是很多例外。

說到這個例外,我想起另一個例子來。古人取“字”的時候,常常按兄弟次序取“伯仲叔季幼”,例如“季常”、“幼常”。但有一次有個哥們就問我:為什麼這個哥哥字“叔x”,而弟弟字“伯y”?是不是史書寫錯了?

這就是規範中“例外”情況導緻的混淆甚至是混亂。

4、我擅長制定編碼規範,你們聽我的就好了。

我原項目組使用的規範就是我編訂的。到新項目組裡,它就捅了簍子。

如果對規範有意見,可以通過一定方法修訂并釋出新的規範。但是在新的規範釋出之前,請遵守舊的規範。

感謝:知乎網友