我說說我對code review的想法,
我認為code review就像法律一樣,
這社會要有制度的運作,一定要有法律,
但若是這個法律是總統隨他高興說了就算的話,
那這個法律會是很爛的法律,
說穿了也不是什麼法律,根本就是命令,
那還不如不要有,
因為這種隨個人喜好而制定出的"法律"往往最後只是成為整人的工具,
一個好的法律是要一群人討論後制定出的,
那code review也是這樣,
在review之前,
先大家一起制定好code standard,
說好要尊守這個standard,也了解狀況後,
再依據standard做code review,
只要符合standard的話,
裡面怎麼寫那就是coder的自由,
不會造成"問題"的話,
reviewer不應該去干涉coder的寫法,
畢竟程式這種東西還是有些地方是主觀的,
管太細會引起不必要的爭執,
我本身是很認同要有code review,
但我發現很多人,好像是想要表現出自己很強,
就會把code review弄得很像是批鬥大會...
code review對我來說主要目的就兩個,
一個是確認code有沒有符合"大家約定好的"standard,
二個了解對方怎麼寫,而不是要逼對方怎麼寫,
若在code review時刁別人,
並不會讓別人覺得reviewer很強,
只會讓別人覺得這個reviewer很閒或存心找碴,
我是曾經遇過2種不好的code review,
第一種是老鳥沒有遵守code standard,
也不用被code review,
而我呢,是新人,就被code review啦,
我原本程式寫成A,被code review後,
被要求改成B,再被code review後,
被reviewer指責說為什麼要寫成B,
要我改回A...
我心裡就覺得這reviewer是來亂的...
第二種是reviewer程式功力很差,
他不會用function,
而我遇到重覆的code會寫成function,
他看到function就要我把function拿掉,
唸說寫function別人會"看不懂"..
原PO真的不用難過啦,
我自己寫case 1的時候,
我的寫法也是和你一樣的,
你前主管沒看過的話,
那真的程式看得太少了...
我自己是遇過一種狀況,
我刮號會習慣打成
if(){
XXX;
}
但我有個前同事看到我這樣寫,就罵我亂寫,他只看得懂
if()
{
XXX;
}
我也好奇大家會怎麼看待這件事,
我對code review這件事也是有些感慨,
本來是一件很好的事,
結果常常被扭曲成"政治工具"
※ 引述《workworkwork (Miyada vv)》之銘言:
: 這是我"前"公司的經驗了
: 一開始以為公司內有嚴格的coding style規定是件好事
: 我也贊成公司要有一致的coding style
: (像我以前看過apache的C code
: 全部CODE都像同一人寫出來的一樣)
: 而公司內也會有人code review你的部份
: 一切聽起來都很完美
: 一開始聽到有規定coding style和code reviewer也很開心
: 但因這一切都因為公司裡有一個奇怪的規定而毀了
: "code不可以用code formatter去掃"
: 我承認自己寫程式常會漏勾
: 所以寫完會花很多心力在檢查有沒有BUG 是否會被攻擊 資安問題等等....
: 但在這間公司發現一個很奇怪的事情
: "有資安漏洞的CODE大家會很有耐心的教 空格沒空好會被罵的狗頭淋頭"
: 搞到最後一段程式寫完我只知道檢查空格....
: 最後的最後我決定離職的原因是出在reviewer
: 和reviewer的code觀念差太多 跟本無法共事
: 例如:
: 1.
: 有時為了避免太多層出現===>
: if(a)
: {
: //do a things
: if(b)
: {
: //do b things
: if(c)
: {
: //do c things
: }
: }
: }
: 會改成====>
: if(!a)
: {
: return ;
: }
: //do a things
: if(!b)
: {
: return ;
: }
: //do b things
: if(!c)
: {
: return ;
: }
: //do c things
: 但因為這寫法code reviewer沒看過
: 她直接在辨公室裡開飆
: 2.
: reviewer說出了我聽說最莫名奇妙的一句話
: "這function以前沒人用過 所以你不能用這function"
: (jquery的trigger)
: 不是因為效能 不是因為安全問題 而是因為公司前人沒用過....
: 我第一次遇到會規定coding style的公司
: 一開始以為是檢到寶
: 後來沒想到工作沒滿試用期就離職了....