【求助】公司统一规定"{"必须放在行末,这很不习惯,我该怎么

[复制链接]
15508|109
 楼主| 肚里有史 发表于 2007-9-16 23:36 | 显示全部楼层 |阅读模式
【求助】公司统一规定&quot;{&quot;必须放在行末,这很不习惯,我该怎么办?<br /><br />  我是一名拥有多年嵌入式C语言编程经验的工程师。虽然不是专业的程序员出身,但是在代码书写规范上一直掌握得非常好!因为我曾经仔细研究过林锐博士的《高质量C++/C编程指南》一书(没看过该书的衷心地建议您买一本)。<br />  这两年,公司规模不断壮大,规矩当然也随之多起来。规矩一多,自然会影响做事效率。<br />  最近上面下发了一个新通知,要求所有工程师都必须执行公司内部的《C/C++编程规范》。很不幸,我不是该《规范》的制定者,而是被执行者。公司规模扩大后,出这么一个东西的重要意义显而易见,林锐博士的书中也有详细论述。这个我不但不反对,而且完全赞成。只是对其中的某些“规范条款”觉得不是很合适。其中对我今后编程影响最大的就是左花括号“{”问题了。<br />  公司《规范》规定:左花括号“{”必须放在一行的末尾,例如函数、if/for/while/switch语句,等等;右花括号“}”必须与函数名、if/for/while/switch的首字母对齐。举个例子:<br /><br />int&nbsp;Max(int&nbsp;iX,&nbsp;int&nbsp;iY)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;iX&nbsp;&gt=&nbsp;iY&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;iX;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;iY;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />  这可麻烦了!一直以来我的习惯都是和林锐博士风格一致,即:“{”和“}”都独立占一行,并且位于同一列,同时与引用它们的语句(就是if/for之类)左对齐。还是上面那个简单的例程,按此风格可以写成:<br /><br />int&nbsp;Max(int&nbsp;iX,&nbsp;int&nbsp;iY)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;iX&nbsp;&gt=&nbsp;iY&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;iX;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;iY;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />  我想,看帖的各位大都是后一种风格吧?而且国内绝大多数C/C++程序员都是后一种风格。然而,公司的《规范》偏偏不是这样。<br />  这种《规范》里的条款令我非常不适应!我已经将该意见反馈给上面了,但得到答复是:公司不可能同时制定两套规范,所以必须严格执行。<br />  我该怎么办呢?改变早已形成的习惯?“两本帐”,一套自己玩,一套应付上面的检查?还是换个……?不敢想象!希望看帖的各位同行能给我指点迷睛,谢谢!<br />
sodwell 发表于 2007-9-17 00:12 | 显示全部楼层

re

大公司都会统一风格的,我的风格和你一样,现在的公司用这2种风格的都很多,要是让我转向第1种,我也会很不适应。我们旁边还有家大公司的编程风格也是要求非常严,连缩格都是严格规定,但是我看他们的编程规范里面提到是坚决不准用第1种!<br />不知道大家觉得哪个好一些?
 楼主| 肚里有史 发表于 2007-9-17 00:36 | 显示全部楼层

谢谢支持!

公司早期--&gt规矩很少且宽松--&gt开发工程师自由,创新效率高<br />公司壮大--&gt规矩增多且严格--&gt开发工程师死板,做事效率低<br /><br />公司早期--&gt开发工程师较少--&gt老板直接控制--&gt不需要条条框框--&gt关系和睦<br />公司壮大--&gt开发工程师增多--&gt管理出现失控--&gt需要规矩来弥补--&gt关系疏远<br /><br />这是定数?
wowow 发表于 2007-9-17 00:45 | 显示全部楼层

偶喜欢第一种

看起来程序短一些。我用slickedit时里面的自动完成的功能生成的代码就是这样的格式,比较省心。必如打个if自动出现<br />if(){<br />}<br /><br />再说这又不是要人命的东西,没必要恐慌吧&nbsp;:)
HWM 发表于 2007-9-17 07:47 | 显示全部楼层

没什么关系,等你到了可以制定规则的时候再把它改回来。

  
wangkj 发表于 2007-9-17 08:22 | 显示全部楼层

换公司,不换就听话

  
宇宙飞船 发表于 2007-9-17 09:07 | 显示全部楼层

俺做菜鸟的时候用第二种!长大以后用第一种!

*************《第一种》*******************<br />int&nbsp;Max(int&nbsp;iX,&nbsp;int&nbsp;iY)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;iX&nbsp;&gt=&nbsp;iY&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;iX;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;iY;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />*************《第二种》*******************<br />int&nbsp;Max(int&nbsp;iX,&nbsp;int&nbsp;iY)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;iX&nbsp;&gt=&nbsp;iY&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;iX;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;iY;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />
power5000 发表于 2007-9-17 09:29 | 显示全部楼层

前习惯变成后习惯就好,习惯一下

  
wangkj 发表于 2007-9-17 09:52 | 显示全部楼层

先学pascal的用第二种,先学c的用第一种

其实都无所谓
王紫豪 发表于 2007-9-17 09:57 | 显示全部楼层

我是第一种

我严格按照&nbsp;K&R&nbsp;的规范,而不是林锐的
HWM 发表于 2007-9-17 10:05 | 显示全部楼层

我认为两者都有自己的特色

第一种更为紧凑,而第二种更为清晰,我一般两种都可能用。<br />
myfaith 发表于 2007-9-17 10:25 | 显示全部楼层

支持第二种!

第二种清晰明了,一目了然,第一种看个括号都找不到哪个和哪个配套<br />我一直用第二种
yewuyi 发表于 2007-9-17 10:43 | 显示全部楼层

哈哈,俺喜欢做菜鸟,俺喜欢第二种

  
xwj 发表于 2007-9-17 12:12 | 显示全部楼层

刚开始用第一种,后来就全部用第二种了

理由同12楼
qjy_dali 发表于 2007-9-17 12:52 | 显示全部楼层

公司要求你的那种是Linux内核中的风格

习惯就好了
sodwell 发表于 2007-9-17 13:09 | 显示全部楼层

re

看来&nbsp;用2种的人都不少呢!可能国内是这样,不知道哪位朋友知道国外的工程师喜欢用那种?
HWM 发表于 2007-9-17 13:12 | 显示全部楼层

LS:据我了解国外对此类用法差异并不十分讲究。

  
ayb_ice 发表于 2007-9-17 13:39 | 显示全部楼层

我的规范是

int&nbsp;Max(int&nbsp;iX,&nbsp;int&nbsp;iY)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;iX&nbsp;&gt=&nbsp;iY&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;iX;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;iY;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />改成<br />int&nbsp;Max(int&nbsp;iX,&nbsp;int&nbsp;iY)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;iX&nbsp;&gt=&nbsp;iY&nbsp;){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;iX;<br />&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;iY;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />与你公司的规定稍有出入...<br />&quot;{&quot;独立占一行的话,会占用大多的行数,本来简单的程序可能会感觉复杂些,因为可能一屏显示不下...
chunk 发表于 2007-9-17 13:45 | 显示全部楼层

那你们公司对以下格式禁止吗?

int&nbsp;foo(int&nbsp;x)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;a;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;d,c;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;some&nbsp;code&nbsp;place&nbsp;here<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br />
eelninth 发表于 2007-9-17 14:08 | 显示全部楼层

楼主id很好

我用的是第二种风格呵呵<br /><br />俺肚里史是有点,不过相对而言更多的还是屎<br /><br />还有个id叫史太浓<br /><br />不好意思啊,看到楼主id忍不住多说了几句
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

15

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部