我说说我对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的公司
: 一开始以为是检到宝
: 后来没想到工作没满试用期就离职了....