作为编程的工作人员,代码风格也是非常重要的。编译器一般不会挑起难看的代码,能够顺利编译的代码不一定是好代码,好的代码一定能够顺利编译,怎么才能写出好代码。好的代码是需要好的风格的。本人主要是在linux下编程,所以编程风格主要是使用linux内和风格。
一、标识符,变量名、函数名、常量、结构类型名、枚举类型名、联合类型名、自定义类型名等
1、禁止使用函数拼音作标识符,更不容易理解;
2、标识符只能有字母(大小写),下划线(_)和数字构成,不能以数字开头表示的组合,表示特定含义的符号即可;标识需有明确的含义;
3、标识符可以用完整的单词或易于理解的缩写,短单词去掉元音形成缩写,长单词取头几个字母即可,需要积累即可;
4、标识符宏定义或常量常用全大写标识,其他,基本都是用小写;
5、标识符可以采用驼峰式命名,除了首单词首字母小写,其他单词首字母是大写;可以用_分割单词,建议不用;
6、全局变量或全局函数的命名可以多用几个单词明确标识符的功能;
7、尽量不要使用单字母的变量名称,除了for循环中i、j和k之外的任何变量;
二、空白
1、空白包括空行、空格和Tab等,代码中加上适当的空白,降低代码的密度,令代码显示更加美观
空行:代码中的逻辑段路之间往往使用空行分开,例如:函数与函数实现之间,定义语句与执行语句之间与返回语句之间都应使用空行分开
空格:主要用来区别不同内容(关键字,符号、运算符、标点等)。
1、if、while、else和for等后的左小括号与关键字之间插入一个空格,控制表达式与左右小括号之间不加空格,如:while (1);
2、双目运算符(=,+,>)等两侧各插入一个空格,单目运算符(++、-、&、!)等与操作数之间不能加空格;
3、后缀运算符(.)、函数调用foo(arg1)、取数组成员a[i]都不需要加空格;
4、标点符号(, ;)后家上空格;
5、unix标准终端字符是24行80列,大于80个字符的长语句尽量折行写,折行后的语句要尽量和先前语句左对其,使用tab调整;
6、较长的字符串也可以断开成多个字符串分行书写,多行同样需对其即可;
7、变量定义时最好一行指定义一个变量;
8、头文件引入、变量定义、执行语句、返回语句之间都应该插入空行;
三、缩进,常用来体现代码中语句的层次逻辑关系,使用tab字符缩进,尽量不用空格表示tab,禁止空格缩进和tab缩进混用
1、跳转和循环语句中在带语句块是,语句块的{应与语句在同一行,中间用空格分隔即可;减少代码行数
2、普通函数定义时{应与函数声明在同一行;减少代码行数
3、每一层语句块的嵌套都要实现代码的往里缩进一层;
4、goto语句的自定义标号不要缩进,无论标号下的语句的缩进层级如何;
四、注释,常用对代码作特别说明,
1、注释主要包括单行注释(以//开始到行尾结束)和多行注释(包括在/*和*/之间的内容);
2、整个源码文件的顶部注释,模块的信息(文件名、作者信息、版权信息、版本(历史)信息)等,注释顶头写,不缩进;
3、函数注释,函数的功能,参数、返回信息、错误码等,写在函数定义上侧,与函数定义建不留空行,注释顶头写,不缩进;
4、语句块注释,说明语句块功能,写在语句块上侧,与语句块不留空行,与当前语句块缩进层一致;
5、复杂结构体注释,说明变量的含义表示等,写在结构体内外均可,与最近的语句缩进层一致;
6、复杂的宏定义注释,说明红顶的含义等,顶格写,与宏定义不留空行,无缩进;
7、复杂的变量声明注释,变量的作用说明,写在变量声明的上侧,与语句不留空行,缩进保持一致;
8、特殊行代码注释,又叫代码行右侧注释,一种短注释,对当前行代码作特别说明。一般为单行注释,和代码间最少需隔一个空格,同一源文件中的右侧注释必须对其,一般从61字符开始;
9、穿插在代码行中的注释,建议不要使用;
五、编程的基本要求:
1、一定要实现一个函数只做一件事情,并能力做好,不要实现面面俱到的函数;
2、建议代码行数不要过多,不超过2屏,24×2=48行;
3、同一函数内部缩进层级尽量不要超过5层或更多层;
4、函数的实现思路应该是逻辑简单,实现方便;
5、执行函数调用就是通过函数调用完成函数执行的动作集合,因此函数名经常包含动词,常常是动名机构的短语;
6、重要的函数往往需要加上适当的注释
7、同一个函数中的局部变量不要超过10个,传递的参数不大于6个,降低函数的复杂度;
8、在超过3个不同的地方重复实现的代码,尽量抽象成函数来实现功能;
9、原则上注释部分不低于代码量的30%;
10、复杂类型的定义,结构体、联合体、枚举、函数指针、复合类型的数据尽量用typedef定义新类型的方法定义使用;