Re: [轉錄] Code Review: 大家都應該做的事情

看板Soft_Job作者 (這些分鐘妳有沒有想過我?)時間13年前 (2011/08/17 07:04), 編輯推噓6(604)
留言10則, 7人參與, 最新討論串6/18 (看更多)
在討論之前,先把我認知的名詞講清楚: 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
沒有讀者就不會把code寫得好懂, 你也得確定n年後不會有
08/17 07:43, 2F

08/17 07:43, , 3F
人找你維護那code才是......
08/17 07:43, 3F

08/17 09:39, , 4F
推.
08/17 09:39, 4F

08/17 10:17, , 5F
我同意就算不是高手,code review 有做還是有差的,例如
08/17 10:17, 5F

08/17 10:18, , 6F
code style, interface 基本防呆, dependency check 都是
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
文章代碼(AID): #1EIlU4rz (Soft_Job)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 6 之 18 篇):
文章代碼(AID): #1EIlU4rz (Soft_Job)