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

看板Soft_Job作者 (Richard)時間12年前 (2011/08/19 18:16), 編輯推噓4(4016)
留言20則, 7人參與, 最新討論串15/18 (看更多)
前文恕刪~ 其實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. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.203.138

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

08/19 18:22, , 2F
3的發生可能性?
08/19 18:22, 2F

08/19 23:21, , 3F
推好處4. 5. 跟壞處1.
08/19 23:21, 3F

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

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

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

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

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

08/19 23:29, , 9F
那專案在做甚麼的...
08/19 23:29, 9F

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

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

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

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

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

08/20 00:26, , 15F
review 我是不相信的. XD
08/20 00:26, 15F
這裡我有講錯的地方要修正,因為是有另外一個主任工程師會去 review大家的code,但是不是面對面在commit code前那種review, 而是在code進SVN後會去review。 我也贊同只是講述一下自己的code做了什麼,應該是有更多效益的。 所以講code review沒什麼功能這句應該要修正。 test case前公司內是另外QA team負責的,他們也是有做review,不過他們是 不寫code的那種QA ※ 編輯: flydragon198 來自: 219.84.252.202 (08/20 07:29)

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

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

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

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

08/30 12:41, , 20F
嗯...不管當貓還是老鼠都 實在很累
08/30 12:41, 20F
文章代碼(AID): #1EJZW2S4 (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1EJZW2S4 (Soft_Job)