2008-10-21 19 views
6

在我目前的工作中,我們對代碼質量和編碼標準非常嚴格。所有新員工都經歷了「洗腦」時期,在這段時間,高級開發人員指導他們編寫(希望)更好的代碼。減少新員工的編碼標準「洗腦」時間和努力

代碼審查過程非常細緻,通常使開發人員的審查生產力減半。有時候'洗腦'期間會拖延2到3個月。有時校正是微妙的(例如,構造IF語句以便儘可能早地短路),有時你會忍不住舉起眉毛(例如,聲明一個字符串並將其設置爲String.Empty並在下一行分配另一個值)。

我正在尋找建議,以減少時間和精力,以獲得與團隊編碼標準同化的新員工。

其他人在類似情況下做什麼?你們使用什麼流程或工具?有沒有辦法讓這個自動化?我已經考慮過FxCop但實際上並沒有嘗試過它,不知道它是否真的有助於減少時間和精力,或者它甚至是正確的工具?由於邏輯原因,我們不能做配對編程如果這是一個建議。而且我會懷疑它會減少努力。

我們已經嘗試維護一個內部維基的'更正',但那是悽慘的失敗。缺乏執法力度,也因爲「有人糾正你的錯誤」而不是「閱讀並試圖防止錯誤」更容易。

另外,你們是如何鑽進新員工,代碼質量很重要?你們是否在面試時排除了那些對質量缺乏認識的人,或者你在被僱用後是否嘗試改變他們?

非常感謝。

編輯:感謝所有的答案。不知道這個問題是否有正確的答案,但我會標記爲正確的,我肯定會嘗試。

+1

此問題似乎是脫離主題,因爲它不在討論區範圍內,如幫助中心所述。 – Will 2013-08-23 15:19:57

回答

6

花一些時間編寫一個應用程序,演示所有優化代碼的原則。這可以變成一本關於「瞄準什麼」的手冊。人們在實現具體目標的目標方面做得更好,而不是因爲打擊「反目標」而不斷受到懲罰。同樣,用正確的方向指出人們所用的時間比用所有錯誤的方式來描述正確的方向花費的時間要少。

您的最佳代碼引擎項目也可能會故意使用常見陷阱和算法結構不佳進行次優化。關於這兩者之間的區別的註釋可以插入到引物中,並且具有關於如何證明與另一個相比明顯不是最優的硬事實。

這不只是新手誰可以從這樣的神器中受益,我自己在我的工作,我很孤立,並依靠網絡編碼的社區我的大多數專業發展。每個人都可以達成一致的最佳實踐的一些明確例子將對我很感興趣。

2

我不確定你是否有一些這樣的地方,但他們可能會有所幫助。

  • 培訓時間爲新員工 - 他們得到導向上任何事情,一切關於你的公司,包括代碼標準的一部分。
  • 不遵守代碼標準的處罰 - 您是否有「代碼標準違規罐」,他們因未遵守標準而被罰款,或者每過10次違規就必須爲您提供午餐。當然,負面的動機並不總是工作
  • 刪除不符合標準的提交 - 不確定是否所有源代碼管理系統都允許這樣做,但是如果編碼器提交不符合規範的代碼,那就意味着它必須去。沒有理由。

最終我認爲培訓是你需要的,但其他兩個建議往往與法西斯主義接壤,我承認。

+0

是的,我們確實有一個培訓期間,一部分更常見的編碼標準被分配給新員工。但就像我說的,讓別人發現你的錯誤比試圖不讓自己更容易。 你現在的做法是什麼樣的處罰? – Fung 2008-10-21 09:24:45

+0

我真的很討厭處罰的想法,即使我不認爲它是「法西斯」,我個人不會接受這個並立即辭職。國家可以罰你不是你的同事。接下來是什麼 ?在地下室創建監獄? – Barth 2008-10-21 09:25:16

2

如果您嚴格遵守您的編碼標準,並且您正在手動完成所有這些工作,則可以通過採用多種自動化工具顯着節省時間。他們會讓你的高級開發人員的生活變得如此簡單(我假設你使用。NET正如你所提到的FxCop):

  1. 在客戶端 - 你可以使用的東西,像ReSharper R#與模板的功能,以確保代碼符合你的指引
  2. 在服務器端 - 你需要設置一個持續集成系統並將FxCop等工具集成到其中。我們使用FxCop,並使用我們公司的產品PBA來表達它的功能。
0

也許它是不是真的與你問什麼,但我只是想和你們分享:

一旦我的算法老師看見有人穿就可以了T恤寫:「沒有錯誤,好程序員!「然後他說:「我不這麼認爲,你必須有缺陷才能成爲一名優秀的程序員。」 - 這是一個有趣的觀點。

那麼,爲什麼你不教書寫錯誤?我正在談論使用反向的方式讓人們成爲一名優秀的程序員。

0
  1. 做一個代碼標準的培訓,並有一個參考文檔
    • 使用代碼風格檢查工具 - 甚至把一些樣式錯誤,生成錯誤
    • 做代碼審查的承諾
    • 源代碼控制系統允許設置鉤子和提交隊列,所以沒有錯誤的代碼去主樹
    • 不時發送給大家的'經驗教訓'和'造型提示'電子郵件不會受到傷害。有時候,某些指導方針的「爲什麼」對每個人都不明顯,因此很難適用,所以這樣的郵件甚至可以觸發每個人都可以學習的午餐/咖啡討論。
0

我不認爲你可以縮短學習週期的長度,但你可以有更頻繁的代碼審查比你更有經驗的減少它在造成非必要的工作數量開發人員。

首先給予新手首先一些修復錯誤,然後像他們所做的那樣檢查他們的每一個修復。讓他們開始修復錯誤的額外好處應該是他們會接觸到您希望已經達到您的標準的現有代碼(可悲的是,我們的比例太高了)。