打印

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

[复制链接]
11843|109
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
肚里有史|  楼主 | 2007-9-16 23:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
【求助】公司统一规定"{"必须放在行末,这很不习惯,我该怎么办?

  我是一名拥有多年嵌入式C语言编程经验的工程师。虽然不是专业的程序员出身,但是在代码书写规范上一直掌握得非常好!因为我曾经仔细研究过林锐博士的《高质量C++/C编程指南》一书(没看过该书的衷心地建议您买一本)。
  这两年,公司规模不断壮大,规矩当然也随之多起来。规矩一多,自然会影响做事效率。
  最近上面下发了一个新通知,要求所有工程师都必须执行公司内部的《C/C++编程规范》。很不幸,我不是该《规范》的制定者,而是被执行者。公司规模扩大后,出这么一个东西的重要意义显而易见,林锐博士的书中也有详细论述。这个我不但不反对,而且完全赞成。只是对其中的某些“规范条款”觉得不是很合适。其中对我今后编程影响最大的就是左花括号“{”问题了。
  公司《规范》规定:左花括号“{”必须放在一行的末尾,例如函数、if/for/while/switch语句,等等;右花括号“}”必须与函数名、if/for/while/switch的首字母对齐。举个例子:

int Max(int iX, int iY) {
    if ( iX >= iY ) {
        return iX;
    } else {
        return iY;
    }
}

  这可麻烦了!一直以来我的习惯都是和林锐博士风格一致,即:“{”和“}”都独立占一行,并且位于同一列,同时与引用它们的语句(就是if/for之类)左对齐。还是上面那个简单的例程,按此风格可以写成:

int Max(int iX, int iY)
{
    if ( iX >= iY )
    {
        return iX;
    }
    else
    {
        return iY;
    }
}

  我想,看帖的各位大都是后一种风格吧?而且国内绝大多数C/C++程序员都是后一种风格。然而,公司的《规范》偏偏不是这样。
  这种《规范》里的条款令我非常不适应!我已经将该意见反馈给上面了,但得到答复是:公司不可能同时制定两套规范,所以必须严格执行。
  我该怎么办呢?改变早已形成的习惯?“两本帐”,一套自己玩,一套应付上面的检查?还是换个……?不敢想象!希望看帖的各位同行能给我指点迷睛,谢谢!

相关帖子

沙发
sodwell| | 2007-9-17 00:12 | 只看该作者

re

大公司都会统一风格的,我的风格和你一样,现在的公司用这2种风格的都很多,要是让我转向第1种,我也会很不适应。我们旁边还有家大公司的编程风格也是要求非常严,连缩格都是严格规定,但是我看他们的编程规范里面提到是坚决不准用第1种!
不知道大家觉得哪个好一些?

使用特权

评论回复
板凳
肚里有史|  楼主 | 2007-9-17 00:36 | 只看该作者

谢谢支持!

公司早期-->规矩很少且宽松-->开发工程师自由,创新效率高
公司壮大-->规矩增多且严格-->开发工程师死板,做事效率低

公司早期-->开发工程师较少-->老板直接控制-->不需要条条框框-->关系和睦
公司壮大-->开发工程师增多-->管理出现失控-->需要规矩来弥补-->关系疏远

这是定数?

使用特权

评论回复
地板
wowow| | 2007-9-17 00:45 | 只看该作者

偶喜欢第一种

看起来程序短一些。我用slickedit时里面的自动完成的功能生成的代码就是这样的格式,比较省心。必如打个if自动出现
if(){
}

再说这又不是要人命的东西,没必要恐慌吧 :)

使用特权

评论回复
5
HWM| | 2007-9-17 07:47 | 只看该作者

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

使用特权

评论回复
6
wangkj| | 2007-9-17 08:22 | 只看该作者

换公司,不换就听话

使用特权

评论回复
7
宇宙飞船| | 2007-9-17 09:07 | 只看该作者

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

*************《第一种》*******************
int Max(int iX, int iY) {
    if ( iX >= iY ) {
        return iX;
    } else {
        return iY;
    }
}
*************《第二种》*******************
int Max(int iX, int iY)
{
    if ( iX >= iY )
    {
        return iX;
    }
    else
    {
        return iY;
    }
}

使用特权

评论回复
8
power5000| | 2007-9-17 09:29 | 只看该作者

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

使用特权

评论回复
9
wangkj| | 2007-9-17 09:52 | 只看该作者

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

其实都无所谓

使用特权

评论回复
10
王紫豪| | 2007-9-17 09:57 | 只看该作者

我是第一种

我严格按照 K&R 的规范,而不是林锐的

使用特权

评论回复
11
HWM| | 2007-9-17 10:05 | 只看该作者

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

第一种更为紧凑,而第二种更为清晰,我一般两种都可能用。

使用特权

评论回复
12
myfaith| | 2007-9-17 10:25 | 只看该作者

支持第二种!

第二种清晰明了,一目了然,第一种看个括号都找不到哪个和哪个配套
我一直用第二种

使用特权

评论回复
13
yewuyi| | 2007-9-17 10:43 | 只看该作者

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

使用特权

评论回复
14
xwj| | 2007-9-17 12:12 | 只看该作者

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

理由同12楼

使用特权

评论回复
15
qjy_dali| | 2007-9-17 12:52 | 只看该作者

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

习惯就好了

使用特权

评论回复
16
sodwell| | 2007-9-17 13:09 | 只看该作者

re

看来 用2种的人都不少呢!可能国内是这样,不知道哪位朋友知道国外的工程师喜欢用那种?

使用特权

评论回复
17
HWM| | 2007-9-17 13:12 | 只看该作者

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

使用特权

评论回复
18
ayb_ice| | 2007-9-17 13:39 | 只看该作者

我的规范是

int Max(int iX, int iY) {
    if ( iX >= iY ) {
        return iX;
    } else {
        return iY;
    }
}
改成
int Max(int iX, int iY)
{
    if( iX >= iY ){
        return iX;
    }else{
        return iY;
    }
}
与你公司的规定稍有出入...
"{"独立占一行的话,会占用大多的行数,本来简单的程序可能会感觉复杂些,因为可能一屏显示不下...

使用特权

评论回复
19
chunk| | 2007-9-17 13:45 | 只看该作者

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

int foo(int x)
{
    int a;

    if () {
    }

    {
        int d,c;
        // some code place here
    }

    return 0;
}

使用特权

评论回复
20
eelninth| | 2007-9-17 14:08 | 只看该作者

楼主id很好

我用的是第二种风格呵呵

俺肚里史是有点,不过相对而言更多的还是屎

还有个id叫史太浓

不好意思啊,看到楼主id忍不住多说了几句

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

15

帖子

1

粉丝