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

看板 Soft_Job
作者 flydragon198 (Richard)
時間 2011-08-19 18:16:28
留言 20則留言 (4推 0噓 16→)

前文恕刪~ 其實code review是應該要作的事,但是大家喜不喜歡是另一回事。 就像大家都知道要寫文件寫註解,寫不寫又是另外一回事 前公司就有作code review,不過二十幾個工程師,只有我被review。 為什麼?因為我配合度高,應該作的事就會去作~~ 所以很多實驗性質或主管想推的東西,我都是白老鼠~~ 不過我並不排斥就是了,當白老鼠有當白老鼠的好處,雖然有些實驗不太好。 簡單的歸納幾點code review應該被實行的原因還有為什麼作不起來。 應該被實行的理由其實很簡單,好處有以下幾點: 1. 人不是神,偶爾會犯很簡單的錯誤。 例如原本要寫 == ,可是不小心copy錯誤或者精神不濟打成 = 或者!= 很誇張?但這都是會發生的。至少我有看過 2. 讓其他人能學習。 有些比較特殊的處理或演算法,或者機器傳回來的特別回應,常常要 當事人摸索很多天才會遇到,這時候code review可以協助讓其他工程 師注意到這個特殊的地方或者學習到好的演算法或處理。 3. 讓其他人能在他休假時協助修改此段程式碼。 如果發生了bug,有code review可能可以知道bug在哪或者哪裡要修改。 4. 避免為了偷懶而不寫註解或不作error handle。 有時候寫程式會偷懶不寫註解或覺得不必要寫註解,或者偷懶忘記作 error handle等,在code review時會被詢問及,也會補上。 5. 有些自己沒想到或沒注意到的想法會被提及。 因為每個人想法和注意到的點不同,在code review時,對方可能會提出 自己沒注意到的地方,或者程式碼沒處理到的部分,這是還蠻常見的。 為什麼實行不起來的原因: 1. 態度的問題。 review別人和被review的人,可能是主管對下屬,同事對同事, 資深對資淺等,都有可能,那麼人與人相處,就會有態度的問題。 有些人就是不喜歡被review,就算他的code有問題,也會硬拗強辯, 覺得自己很厲害,你不懂或者你有什麼資格review他。 有些人是review別人時,態度就像老子對兒子,硬是要吹毛求疵, 挑一些無關痛癢的小毛病。主管對下屬review時常會這樣。 有些錯誤只要講一下提醒對方改進或建議一下就好,但是態度比較差的 就會酸對方:這個你都會寫錯喔; 這種code只有你這種天才寫的出來; 這種東西你還要寫三天; (看著你皺眉,什麼都不說=.=); 每個人被挑剔或被酸時都會不爽的,今天如果是自己被酸也是一樣的。 2. 大家都很忙 每個人都有專案趕的要死,還要花時間review實在很累,所以只要程式 能跑就好了,品質以後再說~~有bug等客戶唉了再講~ 3. 沒有夠能力的人來review 有些東西只有你熟或者有能力review的人在開會或在忙沒辦法review, 那麼常常會派另外一個工程師來review,偏偏他作的東西跟你不一樣, 也不懂你作的東西,那麼review幾乎是沒什麼功能,只是跟對方講述 一下自己的code作了什麼而已。 4. 有些人不喜歡分享code 有些人把code當作自己的財產,不喜歡跟人分享,或者他覺得自己的 code很厲害,不想要教別人,或者想要藏私,當公司開除他會不給他 加薪要離職時,故意不交代code讓接的人頭痛,很多都是有可能的。 5. review沒有重點,全部一字不漏的報告 有些人review就要求對方從頭到尾一字不漏的報告,一行一行的說明 每一段程式碼的功能,這樣對被review的人很累,而且有些東西還真 的就只是copy過來可以動就好(雖然程式碼最好還是能理解才用),這樣 不僅review很花時間也很耗雙方心力,而且被review的人會遇到很多 地方都是自己copy過來用而已,這是一種心理負擔。 所以review其實應該要著重在關鍵程式碼,有一些重複或不必要的地方, 可以省略不看。 至於哪些地方可以略過,哪些是重點,這應該是有經驗的工程師會比較 瞭解的。 不要忘記code review最重要的本質,是為了提升程式品質。 小弟的原則就是每個人都會犯錯,有錯改掉就好了,但是有些人見到別人犯錯, 就像貓看到老鼠一樣,窮追不捨,見獵心喜,甚或洋洋得意=.= 實在很累。 -- 追求卓越,成功就會出其不意找上門。 Follow Excellence. Success will chase you. Chase the excellence, success will follow you. -- ◆ From: 60.248.203.138 這裡我有講錯的地方要修正,因為是有另外一個主任工程師會去 review大家的code,但是不是面對面在commit code前那種review, 而是在code進SVN後會去review。 我也贊同只是講述一下自己的code做了什麼,應該是有更多效益的。 所以講code review沒什麼功能這句應該要修正。 test case前公司內是另外QA team負責的,他們也是有做review,不過他們是 不寫code的那種QA
※ 批踢踢實業坊(ptt.cc)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1313748994.A.704.html

hanbz:3真的挺重要的,尤其是有人離職沒交接的時候XD 08/19 18:21

rofellosx:3的發生可能性? 08/19 18:22

tsukiyomi:推好處4. 5. 跟壞處1. 08/19 23:21

tsukiyomi:台灣人不像外國人可以那麼大方接受批評,可能會有好了 08/19 23:24

tsukiyomi:程式卻壞了人際關係的副作用出現 08/19 23:24

leicheong:壞處3的話, unit test project其實就是相當好的code 08/19 23:27

leicheong:documentation吧. 只要把不對頭的輸入作成test case, 很 08/19 23:28

leicheong:自然就會break到相關的code裡, 要修正也不一定需要理解 08/19 23:29

leicheong:那專案在做甚麼的... 08/19 23:29

leicheong:我的前公司也沒在code review, 但要臨時上馬的情況其實 08/19 23:31

leicheong:不少, 而且很多都是有限半小時到一小時內修正的. 修多了 08/19 23:32

leicheong:就理解內部data flow怎樣走了... 08/19 23:32

TonyQ:「只是跟對方講述一下自己的code作了什麼而已」這就已經夠了 08/20 00:24

TonyQ:test case 也需要 code review 啊 要說一間公司完全沒有code 08/20 00:26

TonyQ:review 我是不相信的. XD 08/20 00:26

Lordaeron:台灣有N 間公司完全沒有code review 的,不知你見過幾間? 08/20 08:46

TonyQ:討論程式碼跟實作就是一種code review,你在告訴我有公司 08/20 09:11

TonyQ:完全不討論他們現有的程式碼跟現有的實作? 08/20 09:11

TonyQ:這個N給個好開心啊,舉幾個例子吧? 08/20 09:12

ppHomer:嗯...不管當貓還是老鼠都 實在很累 08/30 12:41

您可能感興趣