無AI編程:一種革命性的新工作方式
本文探討了代碼審查中的四個常見謬誤,指出代碼審查的真正目的是團隊對齊和指導,而非單純攔截錯誤。強調代碼審查是輔助手段,需要與其他保障措施協同工作。
許多團隊在代碼審查上拖延、敷衍或在每個PR上陷入無休止的來回爭論。讓我們探討背後的原因。
謬誤一 常見誤解:代碼審查之所以困難是因為它枯燥且PR太長。事實:代碼審查困難是因為它重複了編程的認知工作,卻缺少所有中間步驟。工程師往往不喜歡審查代碼,但這不應被簡單地視為工作的一部分,而應探究其原因。
實際上,PR長度並非關鍵。一些團隊發現建立小型PR的規範能加快審查速度、減少精神疲勞,但這並不僅是因為PR變短,而是因為小型PR迫使作者在提交時進行更多的組織和文檔説明。例如,一個1000行的理想改動需要拆分為多個200行以下的PR,每個PR必須獨立有意義,這要求作者進行更多的“敍事”——解釋每個步驟的目的。小型PR易於審查,是因為它們讓作者更清晰地逐步解釋自己,而缺乏這種解釋時,審查者必須費力重構所有推理和上下文,這種抽象猜測遊戲可能比實際編寫代碼更耗費精力。
縮小信息差距有多種方法:將大PR拆分為小PR(可針對功能分支)、提前文檔化問題和解決方案、在PR中添加註釋解釋思路、採用結對編程或羣體編程、使用交互式變基等。這些都能讓代碼審查變得更輕鬆。
謬誤二 常見誤解:代碼審查的主要目的是阻止不良代碼進入應用。事實:代碼審查的主要目的是團隊對齊。雖然發現錯誤很重要,但代碼審查最核心的價值在於確保團隊理解變更內容與原因,並能承諾維護這段代碼。對齊≠同意——團隊成員可能不同意解決方案,但若對問題有共識,就能承諾推進。其次,代碼審查也是一種指導方式,通過評論分享技術、擴大知識面。
這種心態簡化了代碼審查:審查者的首要任務是理解“是什麼”和“為什麼”,這可在高層完成;其次是指導和提升;最後才是捕捉錯誤——這是最困難但最不重要的任務,且與其他角色和工具共享。
謬誤三 常見誤解:代碼審查是軟件質量的終極把關。事實:代碼審查在作為形式時效果最佳,單獨依靠它保護代碼庫永遠不夠。PR不應是驚喜,團隊應提前知悉即將到來的變更。即使如此,代碼作者與審查者之間仍存在知識差距,這種差距由信任填補。信任不是盲目的,但過度懷疑會降低效率。如果代碼作者不誠信,再好的審查者也難以阻止代碼質量下滑。終極把關取決於問題類型:生產環境bug多需加強QA,功能不符需產品經理改進協作,安全漏洞需做威脅建模或聘請滲透測試員。
謬誤四 常見誤解:正確進行代碼審查能解決很多問題。事實:代碼審查對所有有意義的結果都是補充性的,它本身並非足夠強大的工具。試想如果代碼審查被禁止,團隊可能會更多采用結對編程、提前計劃、處理技術債務、與QA和產品更緊密協作、加強文檔、培訓新人、增加自動化測試和靜態分析。這些做法比代碼審查更有效。代碼審查的多功能性是其優點,但也是低效的根源——對大多數問題,都有更高效、更省力的監控方式。找到這些方式是技術領導者的工作。
總之,代碼審查可以不必令人筋疲力盡,只要各方盡職:作者提供充分上下文,審查者明確優先級,團隊投入有效防護措施。隨着流程改進,代碼審查將變得更快速、更容易。