Re: [轉錄] Code Review: 大家都應該做的事情
前文恕刪~
其實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
08/19 18:21, 1F
→
08/19 18:22, , 2F
08/19 18:22, 2F
推
08/19 23:21, , 3F
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
08/19 23:27, 6F
→
08/19 23:28, , 7F
08/19 23:28, 7F
→
08/19 23:29, , 8F
08/19 23:29, 8F
→
08/19 23:29, , 9F
08/19 23:29, 9F
→
08/19 23:31, , 10F
08/19 23:31, 10F
→
08/19 23:32, , 11F
08/19 23:32, 11F
→
08/19 23:32, , 12F
08/19 23:32, 12F
→
08/20 00:24, , 13F
08/20 00:24, 13F
→
08/20 00:26, , 14F
08/20 00:26, 14F
→
08/20 00:26, , 15F
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
08/20 08:46, 16F
→
08/20 09:11, , 17F
08/20 09:11, 17F
→
08/20 09:11, , 18F
08/20 09:11, 18F
→
08/20 09:12, , 19F
08/20 09:12, 19F
推
08/30 12:41, , 20F
08/30 12:41, 20F
討論串 (同標題文章)
完整討論串 (本文為第 15 之 18 篇):