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