2009-09-22 94 views
12

提高公司編碼風格標準的最佳方法是什麼?這裏以C#爲例。編碼風格:如何改進公司的編碼風格和標準

我想有很多開發人員之間的差異需要考慮。具體的可以是教育,經驗和過去的編程語言。

如何證明某件事是正確的而不是其他事情?

一個人可能會說「我把我的身體移動到我用我的四輪車賺錢的地方」。那爲什麼說「我開車去我的車」更「正確」?

有些人可能更喜歡使用更多代碼行更明確的代碼。有些人可能會喜歡更密的代碼。

// Explicit 
string text = defaultValue; 
if (string.IsNullOrEmpty(text)) { 
    text = fallbackValue; 
} 
// Tighter 
string text = defaultValue ?? fallbackValue; 

還是老的保護編程風格,你在開始時檢查錯誤的情況下,而不是整個包住方法身體正面的,如果從句中:

public string ChangeText(string text) 
{ 
    if (!string.IsNullOrEmpty(text)) 
    { 
     // Do a lot of stuff 
    } 
    else { 
     throw new Exception(); 
    } 
} 
// vs. 
public string ChangeText(string text) 
{ 
    if (string.IsNullOrEmpty(text)) { 
     throw new Exception(); 
    } 
    // Do a lot of stuff 
} 

是老「我遇到麻煩閱讀此代碼「在這裏有效?這與Generics被引入C#時的情況是一樣的,人們在閱讀時遇到了最初的麻煩。

哪裏是一些開發人員不習慣的不可讀代碼和代碼之間的界限?

Phil Haacks的哪部分「7 Stages of new language keyword grief」在這裏有效?

有沒有簡單的方法來設置編碼標準,並在公司維護它們?

UPDATE:以在考慮之類的東西變量命名,不能真正在文檔中進行定義。或者可以嗎?

+0

應該是社區維基 – SilentGhost 2009-09-22 15:49:05

+0

更不用說重複幾個問題了。 – 2009-09-22 16:08:33

回答

5

在公司設置編碼標準的最簡單的方法:

創建標準文件和執行它。

...人們喜歡抱怨代碼質量,但很少有人會坐下來花時間創建標準文檔。這是值得的努力,只要你可以執行它(代碼評論等),那麼你一定會注意到你的代碼的改進。

+0

這隻對客戶有好處,假設他們甚至讀了它。代碼檢查器是一種更好的方法,某人的代碼可以根據設置通過或失敗。見瓦迪姆的回答。 – 2009-09-22 15:53:25

+0

編碼標準文檔是開發團隊的內部人員......每個開發人員都閱讀文檔,以便了解團隊的編碼標準。它與客戶無關。客戶永遠不應該看到你的團隊的編碼標準(當然,除非他們要求)。 – 2009-09-22 15:55:27

+0

@Justin:再說一次,這很好,但是它並沒有阻止我提交不同樣式的代碼 - 這會讓你回到原來的位置,OP會在哪裏詢問如何停止。 – 2009-09-22 16:02:58

0

我認爲這裏的一致性很重要。除非當前的方法特別糟糕,否則進入語義辯論的方式沒有太多意義。

重要的是,團隊一致地編寫他們的代碼,以便如果有人辭職或被公共汽車撞到,他/她的同事就會知道當他們被迫使用代碼時會發生什麼。

5

你總是可以使用免費工具,如微軟的StyleCop

您可以禁用或修改您不喜歡的規則

+1

對於Java,請看Checkstyle:http://checkstyle.sourceforge.net/ – 2009-09-22 15:51:44

1

大多數公司都使用編碼風格指南/約定。這些文檔告訴你,即使對於一個命令,你也應該總是在if體上花括號,你應該用製表符/空格縮進等等。

有很多工具可以(自動)檢查和執行編碼風格。 (java世界的一個例子是checkstyle,它可以集成到eclipse中,也可以集成到像hudson這樣的持續集成解決方案中。)

3

首先,您將始終必須執行編碼風格 - 永遠不會有同意。
這就是爲什麼我會嘗試自動檢查一致性。根據你的語言,你可以使用StyleCop(.Net)或類似於linux下的縮進。

每個開發人員都可以在自己的環境中使用自己的代碼風格(根據您的環境,重新格式化可能非常簡單),但所有簽入的代碼必須符合公司的風格。

你選擇哪種款式?那麼,經常有流行的風格 - 取決於語言。對於你的例子(C#),我會選擇微軟風格。最後:只有項目經理(高級程序員)纔有權調整它。

+0

是的 - 像ReSharper這樣的工具可以很容易地重新格式化源代碼,以匹配大括號等約定。 – TrueWill 2009-09-22 17:41:21

1

如何證明 是正確的東西?

簡單:就是不。選擇一種編碼風格,傳達它,並執行它。

+2

簡單,但它可能會導致您的員工厭惡退出。取決於你是否有技術方面的尊重(與你的資歷和權力完全不同)。 – MarkJ 2009-09-22 16:02:44

4

有編碼風格的兩個主側是:「我在哪裏將左大括號」

  1. 類型問題 - 這些通常是不重要的,即沒有真正的理由偏好一種風格。
  2. 實際的編碼規則,就像我們在函數中使用return一樣。

我看到它的方式,對於#1類型的問題,沒有任何爭論的意義。只需在標準文檔中設置一個標準,並強制執行(稍後會詳細介紹)。

至於第二個問題,我真的不知道它是否應該是regulater。我個人喜歡用函數返回值來檢查錯誤情況,我知道有些人對這種做法感到畏懼。但在一天結束時,我們通常可以很好地閱讀彼此的代碼。這些類型的問題更多的是關於你更喜歡錶達自己,更容易寫出來,而且我不希望公司制定達到這個級別的規則。

至於如何執行,標準文件是好的,但根據我的經驗,只是從來沒有讀過或緊隨其後,很快就被遺忘了。 最好的的方式是有一種自動化的工具,告訴你,你違反了標準。例如,即使作爲一個全新的Java程序員,我也知道何時需要大寫/小寫我的標識符,因爲Eclipse讓我(悄悄地,不顯眼地)知道標準是什麼。