(1)switch case
swich
和case
标签应该对齐处于同一列
switch (character) {
case 'a':
...
break;
default:
break;
}
(2)一行的长度限制在80列
超过要换行,且进行合适的缩进,一般一个缩进即可。
(3)括号
代码中用到大括号{}
的地方,应该把起始大括号“{”放到行尾,把结束大括号“}”放到行首。如if
、switch
、for
、do
、while
。
- 注意:函数的起始大括号要放置到下一行的开头
只有一个单独的语句时候可不加大括号:
if (condition)
action();
//多分支情况:只要有一个分支不为单独语句即都要加括号
if (condition) {
do_this();
do_that();
} else {
otherwise();
}
(4)空格
- 一元操作符后不要加空格,如
*
(指针)、!
、~
、sizeof
- 二元操作符(两边跟操作数)两旁需要加空格,如
*
(乘法)、=
、!=
、==
、%
- 指针类型中,
*
应该靠近变量名或函数名一侧,而不是靠近类型名。
(5)注释
注释应该告诉别人代码做了什么,而不是怎么做的。注释要放到函数的头部,且应选择/* ……… */
,而不是//
。
对于多行注释,应该像下面这样:
/*
* This is the preferred style for multi-line
* Please use it consistently.
*/
文件信息注释(放在文件最开始):
/*************************************************
Copyright © zuozhongkai Co., Ltd. 1998-2018. All rights reserved.
File name: // 文件名
Author: //作者
Version: //版本号
Description: // 用于详细说明此程序文件完成的主要功能,与其他模块
// 或函数的接口,输出值、取值范围、含义及参数间的控
// 制、顺序、独立或依赖等关系
Others: // 其它内容的说明
Log: // 修改日志,包括修改内容,日期,修改人等
*************************************************/
函数的注释:
/*
* @Description: 函数描述,描述本函数的基本功能
* @param 1 – 参数 1.
* @param 2 – 参数 2
* @return – 返回值
*/
(6)命名规则
- 单词用小写,然后每个单词用下划线“_”连接在一起(Linux命名风格)
- 要使用完整的单词或者大家都知道的缩写
- 具有互斥意义的变量或者动作相反的函数应该是用互斥词组命名
(7)函数
- 一个函数完成一个功能
- 重复代码要提炼成函数
- 不同函数用空行隔开,如果需要导出,
EXPORT*
宏应该紧贴在他的结束
大括号下
int system_is_up(void)
{
return system_state == SYSTEM_RUNNING;
}
EXPORT_SYMBOL(system_is_up);
- 若函数内有多重循环,或从多个位置退出时,建议使用
goto
- 函数嵌套不要超过4层
- 对函数的参数做合法性检查
- 仅当前文件使用的函数要加上
static
(8)宏
- 定义常量的宏的名字及枚举里的标签需要大写,但函数宏可用小写
- 使用表达式定义常量的宏必须将表达式置于一对小括号之内,如
#define CONSTEXP (CONSTANT | 3)
- 对于有多条语句的宏,建议写成
do while(0)
格式 - 如果宏是常量,建议使用
const
代替