2010-08-12 61 views
11

我們已經嘗試了很多方法,如之前辦理入住手續(難以執行) 你如何在團隊中推廣同行代碼審查的文化?

  • 每月代碼審查會議要求

    • 代碼審查(往往扯開,費時,過高的水平)
    • 一個或兩個開發者提供免費的週期審查變更爲它們添加(低參與)

    我們使用TFS和可以寫一個工具來利用API或建立一個工作流程,這可能有助於促進同行代碼審查。

    你發現你在團隊中取得成功的是什麼?

    我不是上面的噱頭和賄賂,喜歡胡蘿蔔超過棍子。

  • 回答

    20

    我們採納了一些幫助代碼評論更有利的事情。

    • 我們明確表示,評論不是 個人,而不是一個怪的情況。 需要鼓勵對話,即使 如果不是有人想要 聽到。
    • 合理非正式。過程可能會過於死亡。
    • 允許審閱者在他們的 時間內完成。傳遞信息,並給出日期 完成。
    • 我們有一個常見評論類型的常見問題解答 幫助所有人講同一種語言的所有人 的問題。
    • 已將實際的時間分配給 評論。不應該將其視爲 ,但更多的是作爲一個步驟。
    • 保持評論小/專注,並經常做 。不要讓它成爲一個特殊的事件 。這些應該每天/每週發生 。
    • 另外,沒有太多的評論者。 這需要很長時間才能管理。 顯然包括熟悉 代碼設計的 的評論者(也許他們參與了早期的 高級別和/或詳細設計 評論?)。

    還有很多,但一個很好的名單開始!

    相關主題:What is the best way to encourage communication in a team?

    +0

    +幾個點的前幾個點。這都是關於學習/改進,而不是權力。 – dwarFish 2010-08-25 08:16:48

    +0

    愛德華有很多優點。同時指出,同行評審的主要好處是交叉培訓,相互學習,並確保代碼可維護。我發現前6-12個月很難讓人們進入,但之後他們無法想象其他方式。 – 2010-09-19 20:24:43

    3

    您發現您的團隊中有哪些成功的 ? 首先:

    跟蹤每個版本的缺陷數量。確保他們知道什麼在生產中不起作用。這不是要指責,但你必須讓他們在同一頁面上。他們必須認識一點點工作,他們可以減少這個數字。

    現在:

    這確實是有益的唯一的事情是,你必須向他們展示爲什麼它是非常重要的。一旦他們得到了這些,他們就不會希望沒有它而活着。讓他們採用它的關鍵是讓他們按照他們的條件進行設置。告訴他們,你認爲這將是一個好主意,並得到他們的建議,如何實施它。如果你試圖告訴他們將會如何,那麼你所要做的就是加重他們,他們會拒絕接受它。他們必須經歷一個嘗試它的學習階段,並找出如何使其運行。一旦他們「擁有」了這個過程(認爲這是他們自己的),他們就會開始執行它,因爲這是他們的決定。

    +0

    +1意見,以獲得他們的建議。我真的相信,除非一個團隊擁有流程/文化,否則他們不會想要改變它。 – Tinman 2013-01-24 05:05:57

    1

    我再也找不到這個鏈接了,但它討論的是代碼更改的同行評審可能最終集中於將現有的代碼庫而不是改變本身分開 - 當你考慮什麼目的審查是。相反,文章建議對當前文件和以前的版本進行差異化處理,並僅查看這些更改。對不起,我不能將文章歸於它的相關作者,但它一直困在我的腦海裏。

    順便說一句,要清楚總是看到整個代碼庫並讓每個人反饋/進行更改都沒有錯。但是,這不是代碼更改同行評審的目的。

    1

    當你正在尋找做一些事情的過程中,你可以改變你的工作項目的工作流程包括「在代碼審查」狀態。 (這可能是一個可選或必需的狀態)

    然後,您至少要列出所有需要代碼審查的項目。

    您也可以在CodePlex上看看TeamReview項目:http://teamreview.codeplex.com/

    1

    正如一個數據點,軟件諮詢公司我工作,使正常的發展過程中的同行代碼審查的一部分。每個補丁都以標準格式發送到項目郵件列表以供審閱。只有在有人批准修補程序時才能執行修補程序。

    我認爲這種做法應該是各地的規範。

    +0

    你是如何實現它的,以便在未經批准的情況下不能提交補丁程序? – Tinman 2013-01-24 05:07:13

    +1

    通過恐懼和恐嚇的後果,如果有人被抓到做到這一點。但嚴重的是,我認爲你應該相信你的團隊足以堅持這樣的習慣。 – 2013-02-04 15:04:15

    +0

    也就是說,自從我在2.5年前發佈該評論以來,我們大多數都轉向使用Gerrit,它可以讓您執行這些訪問限制,例如,只有項目負責人可以在未經審覈的情況下提交,例外情況下這是必要的。 – 2013-02-04 15:05:10

    6

    以下對我的團隊工作良好。

    1. 每一段代碼是再進「構建」審查 。
    2. 評論作爲指導進程 (在其他答案中提到),而不是 敵對。與此不同的地方被視爲教育機會。
    3. 我們有一個審查系統鏈接到源代碼管理,以便不遵守規定可以被監控(很好)。
    4. 審查制度使我們能夠對審稿人和審稿人進行統計。
    5. 每個評論有一個評論者,通常是「高級」人的同伴。
    6. 清除編碼標準 &預期。
    7. 評論差異不是整個代碼 - 避免挑選現有的代碼。
    8. 代碼作者被期望先檢查他們的東西,那是嚴格執行。因此,儘管我們大部分都鼓勵指導過程,但如果編碼員只是把垃圾扔到牆壁上,而不是建立起來,我們就把它扔掉。
    9. 我們檢查了所有內容:構建代碼,檢查編碼標準,抽樣檢查單元測試以查看它們是否已經運行,並且也符合要求。
    10. 評論已記錄在數據庫中,但我們堅持要求我們通過審查談論,而不是僅僅留下意見,以後經常會被誤解。爲遠程開發人員使用電話+聊天。

    聽起來很貴嗎?事實上,它在維護成本較低的情況下多次償還。

    不可能在老團隊中實施?不是。我們從沒有任何代碼審查的角度實現了這一點,設定了期望,並將其保留下來,直到它成爲我們流程的基石。建立了一支非常優秀的團隊,這個團隊的缺陷率非常低,並且吸納了新人(通常)。當這支球隊分手時,這是我職業生涯中最悲慘的一天。