这是我"前"公司的经验了
一开始以为公司内有严格的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的公司
一开始以为是检到宝
后来没想到工作没满试用期就离职了....
作者: chrischen (一个人的长假) 2014-09-07 00:52:00
案例2的意思应该是怕其他人看不懂 可能有既有惯用写法
不可以用formatter 不过你用了他会知道吗 @@
作者:
tw689 (台湾689)
2014-09-07 01:02:00糟糕 我也不喜欢一的写法orz
作者:
VVll (李奥纳多皮卡丘)
2014-09-07 01:13:00我也喜欢在func内做检查 不允许就return 或者 continue
作者:
xpop777 (Archie)
2014-09-07 01:14:00我喜欢自由发挥xD,加油,总会找到适合的位置
作者:
bndan (seed)
2014-09-07 01:16:00我还以为1的写法会转成switch耶 = =a (也许个人偏好?)
作者:
VVll (李奥纳多皮卡丘)
2014-09-07 01:24:00switch 只能针对明确的result做判断 caseswitch的特点在于 善用break
作者:
GoalBased (Artificail Intelligence)
2014-09-07 01:40:00部门经理说,他在前一个公司,也是有规定老板不用递回,你写了递回去给老板,解释到他懂了他还是会叫你改成循环至于过多层是否是你那个function 职责太多呢?
作者:
uid88 (uid88)
2014-09-07 02:08:001. 写成这样大概我们组上任何人review都会不过2. 新的function确实代表了风险。但是并非绝对不能承受可以设法提出: 1)这function在各种环境下可靠的证据2)若用现有function也可以完成同样功能,用新的好处为何
作者: braverycloud (岚) 2014-09-07 02:13:00
听你这样描述,我会认为在那边只是Code产生器 XD
1.的写法是guard condition? 是的话这样写应该ok看来问题出在无法沟通XD
作者: newcycle (running in circles) 2014-09-07 03:04:00
不用formatter的理由是..?
作者:
andymai (人生只有一次)
2014-09-07 04:41:00reviewer 不能沟通之外也不专业!一个东西能不能用居然是看前人有没有用过?就算自己懒得看~也该叫原PO说明使用上的优缺点~再做进一步的考量~甚至是开个内部会议啊...
作者:
alog (A肉哥)
2014-09-07 06:56:00我觉得reviewer不能沟通就算了其他那些根本就是小事y
作者:
wens (æ–‡æ€)
2014-09-07 09:29:00linux kernel里面就是遇到错可以直接return就直接return需要收尸的时候就会有goto跳到最后面反向收垃圾会这样写有个原因, 就是每行80字符的限制
作者:
jtorngl (Pedrosa go!)
2014-09-07 09:39:00我习惯写 if ("ABC".equals(str)) { 也曾被嫌弃过说为什么不写成 if (str.equals("ABC)) { ....另外常常要做null checking觉得很麻烦,不知是否有好方式
作者:
hegemon (hegemon)
2014-09-07 10:02:00如果你是用java的话..用StringUtils.equals...你就跟他们说这是Apache认证过的
作者:
ticks (ticks)
2014-09-07 10:04:00wes:与其说是80字符的限制,不如说是用这些规定来防巢状if-else。另一个相关的规定就是tab width=8
linux的写法也和driver特性有关 初始化失败要反向处理
作者:
atst2 (atst2)
2014-09-07 12:57:001.你改写的方式,可能会有潜在的问题.主要是你的程式不只是单纯的guard condition,每个codition间还有"do something".不注意的话, 有可能增加leak的机会
作者:
typepeter (∵Peter∴笑点)
2014-09-07 12:59:00这样算是有作code review喔? 这样人人都是code viewer基本上这公司的制度和人员素质都不怎样吧...
作者:
atst2 (atst2)
2014-09-07 13:00:00从这点来看,我不认为你的reviewer在1.的情形不对,也可能单纯是关注点不同,你比较注重减少层次,他可能比较重视单一entry/exit的问题.
我倒是宁愿指定一款code formatter, checkin前要跑一下把时间花在formatting上真是没效率的事.
作者:
ACMANIAC (請肥宅救救肥宅)
2014-09-07 14:12:001 哪有什么问题,这间公司... 块陶阿
作者:
bndan (seed)
2014-09-07 14:29:00= = 其实你的例子一样能转.有没有价值而已...switch(true)case A&&B,!(A&&B)&&C&&D,!(A&&B)&&!(C&&D)
作者:
rave308 (Ray)
2014-09-07 22:34:00int qq = true ? 1 : 2
作者: ku399999 2014-09-08 02:39:00
例一明显是原po写法比较好吧 可读性较高 将来维护也不会继续在里面增加判断式 leak请用auto pointer
不能用formatter扫有啥意义? 有车不开应要用走的
作者: mmchen (艾斯雪雷凯特拉斯) 2014-09-09 14:10:00
trigger超好用的耶,公司没人熟jquery吗…
作者:
b6byc (oopp)
2014-09-09 15:20:00很怕遇到reviewer , 以为自己是神.
作者:
andymai (人生只有一次)
2014-09-10 01:38:00也不是每个reviewer都这样啊~能不能沟通并尽量站在客观的角度去讨论才是重点...
作者:
honochung (http://lol.moa.tw)
2014-09-12 00:22:00想问trigger不好吗@@?我用了超多耶
作者:
ottokang (猫猫的大玩偶)
2014-09-12 14:03:00干麻不用Formatter....