Re: [轉錄] Code Review: 大家都應該做的事情
在討論之前,先把我認知的名詞講清楚:
Design Review: 套用在較大範圍的設計,經由一群有經驗的人來辯證討論後修正,
會討論如何實作,但不是看著寫出來的程式碼來討論。
Code Review: 已經寫出來的程式碼,經由他人來檢視其中有的問題;可能是在
check-in 前或是在 check-in 後做;可以一個人做,也可能是一群人
集體 review。
以 "變動範圍小的 check-in 前 code review" 來說,我不同意需要什麼特別的
能力。它就只是像 "我剛好寫好一篇文章,你可以幫我看看嗎?" 一樣,是一個
很單純的流程。
※ 引述《yy938559 (高個子)》之銘言:
: Code review?
: 別鬧了吧. 一家公司有能力做code review的有幾個?
: 好啦, 即使有人可以review, 並review出問題了, 有能力改嗎?
報社編輯寫完都要給別人看來挑錯字了,程式設計師為什麼能確定沒有小錯?
: 不可能吧. 就是因為經驗不足才會有這種狀況啊!
大多數的錯誤都只比 compiler error 高級一點而已,就像報社編輯的錯字一樣,
常錯字的編輯當然要開除,但不可能找到一個不會打錯字的編輯。
: 光是提出問題, 就能讓程度不夠的人立刻升級嗎? 不可能啊!
不行,但連這個 feedback loop 都沒有,就像小學生寫作文連評語都沒有,
只會讓他們更難成長。
反過來,由沒處理過該部份程式的人來 review 已經有經驗的人的程式,
則是反過來讓他們可以 "看到" 或對該部份程式碼的作用有淺薄的瞭解。
0.00001 仍是大於 0。
: 許多經驗不足, 但覺得自己很強的高手(通常是寫code不到十年的),
: 雖然寫code速度快, 博學多聞, 資料結構一把罩, 說起架構, design patterns
: 也是頭頭是道. 但寫起code來, 總是code架構不佳, 不好maintain.
: 這不是懂的多不多的問題, 也不是努力不努力的問題, 純綷是歷練的問題.
這部份要看問題是落在 design review 的範圍,還是實作的 code review 範圍。
code review 常見的 "無從改起" 的 code,往往是因為一次想要改太多東西,
讓 reviewer 連改都沒力了,所以 Google 內部才會建議一個 ChangeList 儘可能
不要太長。
另外,當沒有需要在給人 review 就可以 check-in 的狀況下,大多數人就不會
以 "寫給別人看得懂" 為目標來寫,從而加了很多不好 maintain 的東西,
不管 reviewer 有沒有經驗,寫別人看得懂的 code 是要練習的,就像大文豪
去當記者也是要練習寫給別人懂,跟有沒有文采無關。
: 有些能力, 特別是code的架構安排,沒有長時間的體會, 就是不會到達那個火喉.
: 不服氣的人, 回去看看你去年寫的code, 如果你覺得去年寫的code讓
: 自己很驚艷, 那你就算是有經驗的programmer. 如果覺得自己程度明明很好,
: 但怎麼寫的code普普通通, 我說, 你就是經驗還不足.
: (我沒說未來無法達到這程度喔)
: 這麼說好了, code review之所以知易行難的原因是:
: review所出現的問題中, 無法處理的問題, 都是code的架構問題,
: 這些東西和programmer的經驗有關. 無法透過短期/長期教育來提升.
: 所以, 有能力改的人, 不用review, 自己也會在過程中修正.
: 沒能力改的人, 也不用改了. 多改只是create愈多問題.
沒有 feedback,要進步會慢很多;
沒有讀者,programmer 也不會想要把 code 寫得好懂。
: 至於那些像 SQL injection 要改成 bind variables,
: lookup table 用array, naming styles 不一致, code 亂成一團,
: 常常有超大method/class, copy-paste code一堆這些東西等問題.
: 如果到了要處理的程度, 那麼在處理之前, 先fire寫這些code的人吧.
問題就是老闆請不起不犯這些錯的人,都請這麼好的人,賺不了錢留不住吧 XD
--
「誰在你的腦海中出現, 她就是你要找的人.....」
-- 《愛情靈藥》
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 69.55.234.45
推
08/17 07:17, , 1F
08/17 07:17, 1F
→
08/17 07:43, , 2F
08/17 07:43, 2F
→
08/17 07:43, , 3F
08/17 07:43, 3F
推
08/17 09:39, , 4F
08/17 09:39, 4F
推
08/17 10:17, , 5F
08/17 10:17, 5F
→
08/17 10:18, , 6F
08/17 10:18, 6F
→
08/17 10:18, , 7F
08/17 10:18, 7F
推
08/17 22:37, , 8F
08/17 22:37, 8F
推
08/17 23:43, , 9F
08/17 23:43, 9F
推
08/18 06:00, , 10F
08/18 06:00, 10F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 6 之 18 篇):