2009-09-21 50 views
7

我經常被髮送到需要對我沒有參與的系統進行代碼審查的站點,並且一旦審查完畢後將不再涉及。我花時間在通常的工具測試中尋找模式,但在某些時候您只需要閱讀代碼。在代碼審查期間保持專注的提示

在第一個5000左右的線後,就不可能專注於代碼,特別是因爲它是商業工具,因此不是最有趣的解決方案。那麼,在代碼審查期間,他們爲了讓代碼專注於代碼有哪些提示?

+9

咖啡,咖啡,咖啡 – 2009-09-21 14:02:52

+5

超過2每天杯咖啡,不建議 - 對健康也不好。 – 2009-09-21 14:05:05

+5

@新的鎮:審查其他人的代碼也不利於健康。 – MusiGenesis 2009-09-21 14:14:53

回答

17
  • 如果涉及到運行代碼,它不是代碼審查。
  • 如果它超過1000行代碼,它不是代碼審查。
  • 如果需要20多分鐘的準備工作,則不是代碼審查。
  • 如果審覈本身需要一個多小時,則不是代碼審查。

也許你的公司應該修復代碼審查過程...

3

到目前爲止,我使用以下

  • 檢查我的電子郵件& RSS經常飼料每 - 然而,這增加了更多的代碼審查。
  • 咖啡 - 喝越來越多
  • 將StackOverflow上回答問題或提出問題;)
+2

+1 _去StackOverflow回答問題或發佈問題;)_ – 2009-09-21 14:05:42

1

這是一個非常棘手的問題。我想我的問題是:你能做些什麼來使得你看起來的前5000行代碼更有可能是正確的?

換句話說,當你的注意力最高時,獲得最大的回報。您必須從鳥瞰視圖中查看代碼才能瞭解這一點。

對於之後的代碼,請對其進行簡要概述,然後寫下您想要回答的問題。當你看到只有在你寫下問題時纔會出現的代碼的時候,你可能會有些擔心。然後看看代碼以回答問題的意圖。

1

該策略應該讓他們遍歷代碼,解釋他們看到它在做什麼。目標是a)產生可靠的,可維護的,正確的代碼和b)從中學習。你會驚訝於你學習瞭解他人的代碼。是的,閱讀代碼的想法是痛苦的,但在實踐中這是一個偉大的教育經驗的機會,它給你的想法在未來看什麼。

當然,太多的東西都是壞事,我看到開發人員必須連續3個月進行代碼評論。他們必須休息一下,修復錯誤,檢查電子郵件,跳過 - 沒有評論的東西。

也許花些時間去了解更多關於這個項目的內容,它是如何工作的,它可能會讓一些無聊的部分變得更有趣,因爲它們對你更重要。與每個模塊的開發者交談,詢問他們做得如何,以及他們擔心哪些部分。

當然並且,咖啡因)

11

做一定數量的練習的代碼,你檢查(如每千行代碼20個仰臥起坐,或類似的東西),每個塊。你可以添加一些小東西,例如爲你看到的每一個無用註釋做5個俯臥撐,或者爲你找到的每個重複功能提供10個註釋。身體活動使頭腦保持專注,並且考慮到世界上大多數代碼的狀態,你很快就會被嚴重撕裂。

警告推薦傳統的ASP。心臟病發作和中風將是不可避免的。

+7

好主意,喜歡的警告;) – 2009-09-21 14:21:03

+2

雖然我喜歡有趣的答案,這不是一個真正的答案的OP問題 - 他說:「我經常發送到我需要對系統進行代碼審查的網站,我不參與「......您不可能在客戶的網站上這樣做......:P – eglasius 2009-11-14 15:46:13

+0

Freddy:除非您是顧問教學重點技巧。 – 2009-11-16 21:31:19

1

我不會推薦切換上下文。當你分析複雜的外星代碼時,你必須保留大量的信息。與操作系統世界不同,切換上下文不僅需要時間,還可以讓你忘記剛剛讀過但尚未記憶的內容。

真正有用的是用你的雙手做一些事情。在代碼中寫下評論,解釋它的作用。當你看到不尋常的東西時留下筆記。大綱問題和TODO標記稍後返回給他們。爲他們使用不同的顏色。

這會讓你100%的時間忙於集中。而且它也會將你的進步形象化,讓你振作起來!

1

我寧願你同時有一個共同評論者。這提高了速度和效率。

+0

配對有幫助。十五個字符也是! – gmoore 2009-11-11 17:55:05

3

除非您非常幸運,否則您應該在前5k行代碼中有足夠的反饋。

檢查this電子書固體。

不要只關注一組隔離的類。首先從頂級用法開始(用戶界面級別 - 如果有多個層級也進入界限)。選擇一對重要的流程,並按照流程進入系統的更多內部部分。選擇一些看起來可能會遇到問題的班級,然後對這些班級進行全面檢查。

要特別注意影響最大的問題,即跨層聊天交互,加載大量數據庫數據,執行大量往返行程,大頁面/或資源。您可能需要對其他物品進行有限的關注,如果這些物品處於其中。

1

您能否以自頂向下的方式進行評論?查看最高級別(主要方法?)並撰寫評論。然後在每個抽象層中深入一步並對其進行評論。有時候,我直接鑽了14層的方法,當我回來的時候完全丟了。保持廣泛的評論可能會有所幫助。

也許在IDE中這樣做是最好的,所以你可以跳過代碼。

不是我會羨慕的東西。我不喜歡與附近的開發者進行評論。

至於時間管理,請嘗試番茄鍾法。當我面對馬拉松編碼會議時,這真的幫助我。

2

我認爲最好的代碼審查時進行這樣的:

  1. 編碼器談到每種方法;一次一個。重點在於它如何以及爲何做它的功能;而不是輸入或輸出。這可以使它變得有趣,因爲團隊中的每個人都對代碼感興趣。
  2. 團隊負責人擔任執法人員。他迫使任何出發點的人回來。
  3. 它被製成一種傳統,並被執行DESPITE什麼(需要修理一個微小的刺臭蟲,咖啡壺中只有無咖啡因的咖啡,人們不會覺得它等)。然後人們進入一個節奏和流動和代碼審查不會因其他活動而逐漸停止。
0

如果代碼使用Java,請使用PMD或CheckStyle。它的優點在於,您可以編寫自己的規則來標記基於該站點代碼標準的違規行爲。

2

我通常在同一時間通過功能遍歷,GUI下降到DB/reporsitory層。

如果評論不存在,我會添加我認爲正在進行的評論。

我會保留我對系統的理解的思維導圖/維基。思維導圖在休息之後更容易取出。

我會跟其他隊友談論我的發現。

2

我懷疑任何人都可以從一天中讀取5000行代碼中提取任何有意義的東西。

我認爲代碼評論應該是互動的,這也讓他們感興趣。如果我負責審查別人的代碼,我不會在意讓他們通過它的方式。他們可能會專注於他們喜歡的東西,或者他們認爲他們做得很好的東西,而我通常對相反的東西感興趣。

我喜歡的格式是讓我坐在連接到投影機的筆記本電腦上,並在屏幕上顯示代碼,以便我可以輕鬆地從一個部分跳到另一個部分。然後在閱讀屏幕上的代碼時,向開發人員提問:爲什麼你這樣做?你總是這樣做嗎?你怎麼決定這個結構? x的單元測試在哪裏? - 同時進行觀察:可以在此處使用更多評論,此代碼格式不符合標準等。另外,讓開發人員或其他人在房間中記錄有關開發人員應該查看或稍後修復的事項明確指示應該在所有代碼中修正常見問題,而不僅僅是已審查的代碼。

想法是而不是來看看每一行代碼。這是開發經理的工作,也可能是QA。代碼審查的主要目的是仔細檢查代碼背後的思想過程,包括體系結構,流程等,以及質量方面:性能,可伸縮性和安全性。

如果您嘗試做或看太多,不僅會燒壞,但結果將不會對任何人有用。

0

你應該在你的代碼評論中有某種結構,因爲一次只讀一行代碼是不可能的。

  • 我通常從單元測試或使用示例(如果存在)開始,以便在看到代碼時我會知道它是如何使用的。
  • 之後,我建議從使用和鑽取到實施一次檢查一個方面/特徵。
  • 如有必要,重複

你應該限制審查的審查是有效的代碼的大小 - 我的工作場所,我們在提交代碼回源控制前審查和,因爲我們保持我們提交小我們也限制審查持續時間。

在審查過程中,我要求將我直接在有趣的/有問題的地方在代碼的問題:選擇一個具體實施時

  • 你做了哪些決定?
  • 作出具體決定的好處是什麼?
  • 你的代碼遵循什麼設計模式/設計原則?

代碼審查的目的是爲了通過改進代碼進行學習和教學。只是閱讀5000行代碼直看起來似乎是錯誤的...

0

我同意其他人,你在做什麼不是一個真正的「代碼審查」。我認爲最重要的是要記住你正在尋找的東西並將注意力集中在它上面 - 從字面上看,你需要回答一些項目和問題的清單。

對代碼庫進行開放式檢查需要很長的時間,如果您的參與應該是短暫的,那麼很難有效。

關於閱讀電臺上的代碼問題,有一個很不錯的播客:link。這是對Dave Thomas(「實用程序員」的作者)的採訪。我認爲這適用於你想要做的事情。

1

是的代碼審查你需要閱讀代碼。但不是隻有5K條直線,沒有目的或計劃。難怪你不能保持專注。

生成度量標準的分析工具可以專注於您。運行分析工具並根據其指標對結果進行排序。每個工具會告訴你「前5名的文件或功能」上一個給定的問題,有問題的:

  • 長文件
  • 長函數
  • 大扇入或扇出
  • 複雜
  • 皮棉侵犯

我猜你被稱爲給代碼質量的一個爲期一天的評估。所以做上面的事情,然後用專注的代碼閱讀來補充它,以找到每種問題的一個非常明確的例子。你不會直接閱讀5K行文字,你可以用它來達到目的,並且可以搜索獎品。這不會很無聊,你會專注。

準備您的報告,其中包含指標,對工具和概念的參考以及代碼庫中每種問題的示例。

所有的事情都完成了,他們付出巨大的代價告訴他們他們可能已經知道但他們不想承認自己。