实用的C语言编程规范(4)

2019-03-04 15:36

3)\、\、\、\、\(地址操作符)等单目操作符前后不加

空格。

4)\、\前后不加空格。

5)if、for、while、switch等与后面的括号间应加空格,使if等关键字更为突出、明显。

规则10.5注释符(包括?/*??//??*/?)与注释内容之间要用一个空格进行分隔。

说明:这样可以使注释的内容部分更清晰。现在很多工具都可以批量生成、删除'//'注释,这样有空格也比较方便统一处理。 规则 10.6源程序中关系较为紧密的代码应尽可能相邻。

11.对齐

原则11.1 程序的分界符‘{’和‘}’应独占一行并且位于同一列,同时与引用它们的语句左对齐;

原则 11.2 { }之内的代码块在‘{’右边数格处左对齐; 原则 11.3代码的的对齐采用TAB键而不采用空格键对齐,一般TAB键设置为向后空4个空格。 示例

好的代码风格

16 / 19

不好的代码风格

12参数设计规则

原则12.1 参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字,如果函数没有参数,则用void填充。 示例

原则12.2参数命名要恰当,顺序要合理;

17 / 19

例如编写字符串拷贝函数StringCopy,它有两个参数,如果把参数名字起为str1和str2,例如:void StringCopy(char *str1, char *str2);那么我们很难搞清楚究竟是把str1拷贝到str2中,还是刚好倒过来,可以把参数名字起得更有意义,如叫strSource和strDestination。这样从名字上就可以看出应该把strSource拷贝到strDestination。还有一个问题,这两个参数那一个该在前那一个该在后?参数的顺序要遵循程序员的习惯。一般地,应将目的参数放在前面,源参数放在后面。如果将函数声明为:

别人在使用时可能会不假思索地写成如下形式:

原则12.3如果参数是指针,且仅作输入用,则应在类型前加const,以防止该指针在函数体内被意外修改。 示例:

原则12.4 如果输入参数以值传递的方式传递对象,则宜改用“const &”方式来传递,这样可以省去临时对象的构造和析构过程,从而提高效率;

原则12.5 避免函数有太多的参数,参数个数尽量控制在5个以内。如果参数太多,在使用时容易将参数类型或顺序搞错。 原则12.6 尽量不要使用类型和数目不确定的参数;

C标准库函数printf是采用不确定参数的典型代表,其原型为:

这种风格的函数在编译时丧失了严格的类型安全检查。

13返回值的规则

原则13.1 不要省略返回值的类型。

C语言中,凡不加类型说明的函数,一律自动按整型处理,这样做不会有什么好处,却容易被误解为void类型;C++语言有很严格的类型安全检查,不允许上述情况发生。由于C++程序可以调用C函数,为了避免混乱,规定任何C++/ C函数都必须有类型。如果函数没有返回值,那么应声明为void类型。 示例

18 / 19

原则13.2 函数名字与返回值类型在语义上不可冲突;违反这条规则的典型代表是C标准库函数getchar。 示例

按照getchar名字的意思,将变量c声明为char类型是很自然的事情。但不幸的是getchar的确不是char类型,而是int类型,其原型如下: 由于c是char类型,取值范围是[-128,127],如果宏EOF的值在char的取值范围之外,那么if语句将总是失败,这种“危险”人们一般哪里料得到!导致本例错误的责任并不在用户,是函数getchar误导了使用者。

原则13.3 不要将正常值和错误标志混在一起返回。正常值用输出参数获得,而错误标志用return语句返回。

原则13.4 有时候函数原本不需要返回值,但为了增加灵活性如支持链式表达,可以附加返回值;

例如字符串拷贝函数strcpy的原型:

strcpy函数将strSrc拷贝至输出参数strDest中,同时函数的返回值又是strDest。这样做并非多此一举,可以获得如下灵活性:

19 / 19


实用的C语言编程规范(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:现行档案标准、法规目录 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: