飞思卡尔中良好的编程习惯
0赞
发表于 1/2/2012 11:34:23 PM
阅读(6336)
1. 动手编码之前,你需要对要编码实现的解决方案有一个正式的或粗略的设计。永远不要在没有任何设计的前提下就开始编码,除非所编代码不重要。
2. 优秀的代码文档跟编程语言知识一样重要。在代码源文件中,为每个主要的代码段添加注释,解释代码的基本逻辑。最好注明程序的构建和修改日期,以及修改的原因也是非常有必要的。
3. 维护程序的各个版本同样重要。当前有些编程工具都自带一个版本管理工具。无论你什么时候改变自己的程序,它们都会将其保存为.bak文件。
我的方法是为每个程序维护三个不同的版本。比如说,我有一个名为program.c的文件,这个文件同时也被其他项目组成员使用。我把这个文件复制为 program.c.old作为备份文件,并且当我修改时,我会备份另一个名为program.c.wrk的副本文件。当成功完成修改时替换 program.c.wrk文件。
你还可以给自己的程序版本添加一个日期或一些注释,像program260505.c或programReadFnWrking.c。
4. 如果工程包含多个源文件,则声称一个README文件,注明每个源文件、数据文件、临时文件以及日志文件(如果有的话)的作用。你还可以注明编译和运行步骤。
5. 有时候,你一定想知道为什么IF语句没有得到预想的结果。可能你使用的是等号,也就是“=”,而不是条件判定符号“==”。一个比较好的办法是用相反的顺序写条件语句。因此,你的条件语句应该如下:
if(10==i)…因此,如果你错误地写成了单个等于号,在编译的时候也能检查出来并报错。
6.使用循环和条件语句时,先把左右括号对应起来,然后再在里面写其他语句。也就是:
代码: 1 for(int i=0;i<10;i++)2 {4 printf(“i=%dn”,i);3 } 注:每一行开头的数字表明写循环代码的顺序。
7. 避免使用幻数(magic numbers)。例如,不要写
代码: circleArea = 3.14 * pow(radius,2); 而要使用如下代码:
代码: #define PI 3.14 circleArea = PI * pow(radius,2);
8. 使用有意义的变量和函数名称。例如,使用‘radius’来代替圆的半径,而不是用‘r’来表示。同样,函数名‘calculateArea’要比其他任何隐晦的缩写要好得多。匆忙之下,我们也许会使用缩写的变量名,但一开始节省时间的话,之后会浪费更多的时间,去猜测缩写变量名代表什么。(编注:)
8. 使用有意义的变量和函数名称。例如,使用‘radius’来代替圆的半径,而不是用‘r’来表示。同样,函数名‘calculateArea’要比其他任何隐晦的缩写要好得多。匆忙之下,我们也许会使用缩写的变量名,但一开始节省时间的话,之后会浪费更多的时间,去猜测缩写变量名代表什么。(编注:)
9. 为后面的调试使用打印语句,这是个好习惯。但是,当完成最后代码后,去掉这些语句,有时也是一项危险的任务。添加一个方法,用于输出调试信息。当最终版本生成时,只要把这个方法注释掉就行。因此,只在一个地方做修改就可以了。
10. 代码编写完之后,开始优化代码。之前声明的一些变量,现在可能没用了。同样,并不依赖循环的一些声明可以移到循环模块之外去。扎实的编译知识同样会对以后的代码优化有所帮助。
11. 对自己的操作系统和硬件要有足够的了解,你可以从资源占用等方面提升程序的性能。
12. 编写代码时要合理使用缩进,以使代码清晰可读。
13. 把项目文件放到SOURCE、HEADERS、MAKE、EXES等不同的文件夹中。
14. 研究别人编写的代码。这可以让你学习到新的编程技术,以及他们解决和你相同的任务时所使用的方法。
15. 最后一条(但不是最不重要的一条),备份源代码文件,这样当硬盘出错或相同的问题发生时,不至于前功尽弃。
附加:补充一条,坚持使用一种命名模式。如果你打算用匈牙利命名法,那就坚持并广泛使用,否则将适得其反。参见微软资深工程师 Eric Lippert 的这篇文章《阅读代码不简单》。
1、以简洁明了的方式编写C程序。通常把这种程序编写方法称为KIS(“保持简洁”)。不要用古怪的方式编写程序。
2、阅读所有的C版本手册。经常参考所用的C版本的手册能了解该版本的丰富的特点,并正确地使用这些特点。
3、计算机和编译器是很好的教员。如果对C的某个特点没有把握,编写一个简单的程序,然后编译并运行它,看看会发生什么结果。
4、在每一个函数的前面加上描述函数用途的注释。
5、执行打印操作的函数所打印的最后一个字符应该是新行符(\n)。这样做可保证把光标定位在新行的开头。这样做可提高软件的可重用性(软件的可重用性是软件开发环境的一个重要目标)。
6、花括号中定义的函数体应采用缩进格式书写。这种写法能够突出程序的功能结构,并且使程序易于阅读。
7、建立自己喜欢的缩进距离,以后统一使用这个距离。虽然可以用Tab键设置缩进距离,但是Tab键的停止位置在不同环境中可能并不相同。建议每一层缩进距离采用1/4英寸的Tab键跳格长度或三个空格。
8、尽管在程序中包含 <stdio.h>是可有可无的,但是每一个使用标准输入/输出库函数的C语言程序最好都包含 <stdio.h>。这有助于在编译阶段(而不是执行阶段)让编译器定位程序中的错误。纠正执行时的错误通常要付出更大的代价。
9、在每一个逗号,后加一个空格可提高程序的可读性。
10、选择有意义的变量名有助于程序自成文档(既可以少使用注释)。
11、仅仅用作变量名的标识符,第一个字母应该小写。大写字母开头和字母全部大写的标识符有专门的含义。
12、变量名使用多个单词可使程序具有更好的可读性。不要把单词连写在一起(如:totalcommissions),而应该用下划线把各个单词分开(如:total_commissions);如果确实想连写单词,在第一个单词之后的每一个单词以大写字母开头(如:totalCommissions)。
13、把函数中的声明语句和可执行语句用空行分开。这样做可非常醒目地表示声明语句的结束和可执行语句的开始。
14、把二目运算符的两边都设置一个空格。这样做可使二目运算符比较醒目,还可以使程序具有更好的可读性。
15、if结构体用缩进格式书写。
16、为提高程序的可读性,在每一个控制结构的前后都添加一个空行。
17、不把多条语句写在程序的同一行上。
18、较长的语句可折成多行。在必须把语句折行时,选择有意义的断点(如在用来分隔列表的逗号之后),并用缩进格式书写断行。
19、在书写包含很多运算符的表达式时参考运算符优先级表。要确保表达式中的运算符以正确的顺序执行。如果对复杂表达式中运算符的计算次序没有把握,用括号强制实现计算次序。要注意,C语言中的某些运算符(如赋值运算符=)是自右向左结合的,而不是自左向右结合的。
