Re: [讨论] 因为空格~我离开了一间公司

楼主: littlethe (东周流浪汉)   2014-09-09 23:04:18
我说说我对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的公司
: 一开始以为是检到宝
: 后来没想到工作没满试用期就离职了....
作者: yyhsiu (hsiu)   2014-09-09 23:17:00
JAVA我会把{放行尾 C++会换行
楼主: littlethe (东周流浪汉)   2014-09-09 23:17:00
为什么呢?
作者: yyhsiu (hsiu)   2014-09-09 23:18:00
奇怪的习惯 不过行尾好像符合google的style主要是建立习惯时期看他人的code学下来的吧在公司是只写过Java啦 规定是行尾
楼主: littlethe (东周流浪汉)   2014-09-09 23:20:00
你习惯真特别XD
作者: hSATAC (cAt Ash)   2014-09-09 23:22:00
go fmt 下去大家 code 都长一样 超棒的
作者: askacis (ASKA)   2014-09-09 23:27:00
{放行尾就 K&R 风格啊,一堆人在用的东西说没看过...
作者: GX90160SS   2014-09-09 23:28:00
比较喜欢换行,这样括号才有对称性看起来舒服
作者: askacis (ASKA)   2014-09-09 23:29:00
叫那个阿菜reviewer查一下K&R,真的是菜虫掉满地XD
作者: superpai (超级白)   2014-09-09 23:52:00
我还以为是javascript
作者: PICASSO1 (Pablo Picasso G.)   2014-09-10 00:00:00
askacis正解!!
作者: ayumiayayaai (Kulapikachu)   2014-09-10 00:49:00
golang 赞赞
作者: doraemon1293 (Mithril)   2014-09-10 01:49:00
我的习惯跟一楼一样耶
作者: snaketsai (さいでんし)   2014-09-10 06:05:00
我是习惯用第二种,不过我是用Whitesmiths style不过这点我觉得真的就是有固定、不要混用就好...
作者: GoalBased (Artificail Intelligence)   2014-09-10 08:29:00
整个公司都不会用function的团队会决定要code r ...?
作者: b6byc (oopp)   2014-09-10 09:18:00
括号两种都看过,我都用耶.
作者: azureblaze (AzureBlaze)   2014-09-10 10:23:00
个人觉得括号只是洁癖而已混用也无所谓在意这个很无聊如果位置会造成阅读上的影响那代表你括号太多层了
作者: GoalBased (Artificail Intelligence)   2014-09-10 10:28:00
ㄓ音文也看得懂阿,不影响阅读吗
作者: vampirewalk (vampire)   2014-09-10 10:37:00
我也支持go fmt
作者: bobju (枯藤老树昏鸦)   2014-09-10 10:43:00
看样子还是需要标准化的美化工具, 工具之前人人平等 ;)至于风格什么的, 真的就只是看得顺不顺眼而已, 影响才没那么大, code写得够久的话, 各种风格都会经历过, 为这个起争执真的是无事忙而已code review 的重点应该摆在这 code 是否符合一些资料安全
作者: azureblaze (AzureBlaze)   2014-09-10 10:48:00
还可以来战tab还是space 我认为全角空白以外都是垃圾
作者: bobju (枯藤老树昏鸦)   2014-09-10 10:48:00
性, 易读性, 结构性, 演算上的效率这些项目上, 而不是在搞形式
楼主: littlethe (东周流浪汉)   2014-09-10 10:55:00
没错,有各种风格,没什么好坏,只是从中选一个,但糟糕的是有人的心态变成是去瞧不起别人看了大家的讨论,好像爱review 别人的人,coding 就不怎么样的感觉,半瓶水响叮当
作者: azureblaze (AzureBlaze)   2014-09-10 11:03:00
因为讲不出东西的时候挑剔风格最容易啊XD
楼主: littlethe (东周流浪汉)   2014-09-10 11:05:00
见过大阵仗看过许多code 的人,只会在意bug 和效能这种比较实际的东西,而非鸡皮蒜毛,也没空管小事
作者: bobju (枯藤老树昏鸦)   2014-09-10 12:33:00
其实现在很多code都是从网络上抓下来安装引用, 甚至是直接嵌入到自己的code当中, 若真的要求code style的风格一致的话, 那天天就改这些code就饱啦 :P而这些公开发布的code已有一定的可信度了, 为了code style是否一致而改code, 衍生出一些莫名其妙的bug 又要debug,那真的是补锅师傅在干的事
作者: cha122977 (CHA)   2014-09-10 13:42:00
同一楼 其实就是看现在写的程式码通用的习惯是什么像kernel的function不放尾行 但if放尾行这种也是有呀
作者: meowyih (meowyih)   2014-09-10 13:43:00
无法接受 bobju 说的 "目前很多 code 都直接抓下来引用"的说法, 抓下来的东西的 code 长什么样子我是管不著, 但要使用这种像 open source 的东西一定都会先 build 成library 的型式, 不然出事了怎么切分问题或责任所在呢?
楼主: littlethe (东周流浪汉)   2014-09-10 16:37:00
没build 是还ok ,但要独立成不同档案,不要和自己的code 混在一起
作者: askacis (ASKA)   2014-09-10 17:48:00
抓下来的code不build要怎么用XD 一般都直接build library在自己的code里呼叫library,很少数情况下才会抽code出来跟自己的Code绑在一起build~通常都是嵌入式环境下求快以及减少flash size才会考虑~

Links booklink

Contact Us: admin [ a t ] ucptt.com