总结自 快跑教育(http://www.kpaoedu.com/)
编程习惯
- 规范的代码(缩进、空格使用得当)
- 高质量、容错性强的程序设计(括号使用、时空复杂度)
- 程序的易读性和可维护性
- 良好的编程习惯(变量见名知意)
文件结构
- 头文件开头处的版权信息和版本声明
- 头文件双引号与尖括号的区别
1、用 #include <filename.h> 格式来引用标准库的头文件
(编译器将从标准库目录开始搜索)
2、用 #include “filename.h” 格式来引用非标准库的头文件
(编译器将从用户的工作目录开始搜索)
程序版式
- 可读性
空行的使用
1)在每个类声明之后、每个函数定义结束之
后都要加空行。
2)在一个函数体内,逻辑上密切相关的语句
之间不加空行,其它地方可加空行分隔。
代码行
1)一行代码只做一件事情,如只定义变量,或只
写一条语句。
示例①:
int width, height, depth;
int width;
int height;
int depth;
2)在使用C语言进行应用层面开发时if、for、while、do等语句自占一行,
执行语句不得紧跟其后。不论执行语句有多少都要加{}。
示例②
if (width < height) dosomething();
if (width < height)
{
dosomething();
}
if (width < heigh){
dosomething();
}
3) 尽可能在定义变量的同时初始化该变量(就近原则)
如果变量的引用处和其定义处相隔比较
远,变量的初始化很容易被忘记。如果引
用了未被初始化的变量,可能会导致程序
错误。本规范可以减少隐患
- 对齐
1) C的应用层面,程序的分界符‘{’和‘}’应独占一行并且
位于同一列,同时与引用它们的语句左对齐。
示例①:
void Function(int x)
{
?
}
2) { }之内的代码块在‘{’右边数 空格处左对齐。
3) 如果出现嵌套的{},则使用缩进对齐
示例②:
if (NULL != (fp = popen("route -n", "r")))
{
while(NULL != fgets(buffer, sizeof(buffer), fp))
{
printf("%s", buffer);
}
}
空格的使用
1)逗号后空格
void Func1(int x, int y, int z);
void Func1 (int x,int y,int z);
2)操作符间空格
if (year >= 2000)
if(year>=2000)
3)恰当使用括号,防止歧义
if ((a>=b) && (c<=d))
if(a>=b&&c<=d)
4)分号后空格
for (i=0; i < 10; i++)
for(i=0;i<10;i++)
5)前后置++, 结构体指针->, 结构体.访问成员等不要多余空格
for (i = 0; I < 10; i ++)
a.Function();
b->Function();
6)三目操作符
x = a < b ? a : b;
x=a<b?a:b;
7)指针变量的 * 号
int *x = &y;
int * x = & y;
长行拆分
1)代码行最大长度宜控制在70至80个字符以内。
代码行不要过长,否则眼睛看不过来,也不便于打印。
2)长表达式要在低优先级操作符处拆分成新行,
操作符放在新行之首(以便突出操作符)。
拆分出的新行要进行适当的缩进,使排版整齐,语句可读。
注释
- 版本、版权声明;
- 函数接口说明;
- 重要的代码行或段落提示。
1)边写代码边注释,修改代码同时修改相应的注释,
以保证注释与代码的一致性。不再有用的注释要删除。
2)注释应当准确、易懂,防止注释有二义性。
3)尽量避免在注释中使用缩写,特别是不常用缩写。
4)注释的位置应与被描述的代码相邻,可以放在代
码的上方或右方,不可放在下方。
命名规则
- 标识符应直观且可以拼读
标识符最好采用英文单词或其组合,便于记忆和阅读。
切忌使用汉语拼音来命名!!!
- 标识符的最小长度 && 最大信息量原则
标识符的长度应当符合“min-length && max-information”原则
变量的名字应当使用“名词”或者“形容词+名词”。
float value;
float oldValue;
float newValue;
- 命名风格
命名规则尽量与所采用的操作系统或开发工具的风格保持一致。
- 少用大小写
程序中不要出现仅靠大小写区分的相似的标识符。
int x, X;
void foo(int x);
void FOO(float x);
- 局部,全局变量名称尽量不同
程序中不要出现标识符完全相同的局部变量和全局变量,
尽管两者的作用域不同而不会发生语法错误,但会使人误解。
|