C语言培训系列--编程规范

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

作者:何毅2011年06月29日C语言培训系列--规范不以恶小而为之,不以善小而不为!不犯错误的人是圣人,不犯同样错误的人是贤人!Page2原则调试、维护、更改代码的时间要远远多于编写新代码的时间。程序最重要的是正确性,其次是可维护性,再次是效率。优美的程序同等重要于正确的程序。尽量写简单易懂的程序。没有注释的程序犹如定时炸弹。养成优良的编程习惯。Page3大纲排版、注释、命名、可读性变量、结构函数可测试性效率质量保证Page4排版1.程序块要采用缩进风格编写,缩进的空格数为4个。2.相对独立的程序块之间、变量说明之后必须加空行。3.一行只写一条语句,for例外。4.“{”和“}”都另起一行写。5.if、for、do、while、case、switch、default等语句独占一行,且执行语句必须加{}。6.一行程序以小于80字符为宜,不要写得过长。7.tab键必须替换为4个空格。8.在适当的操作符后加空格,除关系密切的,如“-”、“.”、单目运算符。Page5注释1.一般情况下,源程序有效注释率必须超过20%。2.每个新增文件必须加描述性语句。包括:版权、作者、描述等。3.每个新增函数也必须加描述性语句。包括:函数描述、参数、返回值等。4.边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。注释要写在代码的上方,注释与所描述内容进行同样的缩排。5.对所有的常量、全局变量、宏、枚举、数组、数据结构必须写注释。6.注释避免在代码中间插入注释。7.必须是效果的,有帮助性的。8.原基础上修改的代码,都必须增加修改标记。Page6命名1.标识符的命名要清晰、明了,有明确含义,最好是自注释的,对于缩写也尽量使用大众比较认可的。2.命名的风格尽量保持一致,推荐用下划线分界,尽量使动作在前。3.对于常量、宏、枚举必须使用大写字母来命名。4.在代码中尽量不要使用魔鬼数字,而是要使用有意义的常量或者宏来代替。Page7可读性1.运算符的优先级,尽量使用括号确定优先级。2.尽量不使用难懂、技巧高的代码。Page8变量、结构1.尽量少使用全局变量,除非不得已。2.变量定义应该集中在函数的前面。3.防止局部变量与公共变量同名。4.严谨使用未初始化的变量做为右值,建议在定义的时候必须初始化。5.变量赋值的时候,要充分的考虑其越界。6.尽量不使用和具体硬件和软件关系密切的变量,如寄存器变量等。7.数据结构的功能一定要单一,一个数据结构只表示一种事物。8.仔细考虑数据结构中元素的布局和顺序。9.设计数据结构时,要考虑向前兼容和向后支持,要考虑到将来会引起变化的因素,或者预留一些空间。10.尽量不要让编译器做太多的工作,例如类型的转换等。Page9函数1.函数的功能一定要单一,一个函数只干一件事情。2.函数入口处,必须对函数的入参进行校验。3.调用函数时,要对函数的各种返回值均做处理。4.绝对禁止使用函数的参数做为工作变量。5.避免设计多参数的函数。6.函数的规模尽量限制在200行以内。7.编程时要经常注意代码的效率。8.设计高扇入、合理扇出(小于7)的函数。9.尽量避免或减少递归函数的使用。10.仔细分析模块的功能及性能需求,并进一步细分,同时若有必要画出有关数据流图,据此来进行模块的函数划分与组织。Page10函数(续)11.改进模块中函数的结构,降低函数间的耦合度,并提高函数的独立性以及代码可读性、效率和可维护性。12.尽量不要使用bool型的参数。13.当一个过程(函数)中对较长变量(一般是结构的成员)有较多引用时,可以用一个意义相当的宏代替Page11可测试性1.各模块必须提供调试日志,以备快速定位问题。2.用调测开关来切换软件的DEBUG版和正式版,而不要同时存在正式版本和DEBUG版本的不同源文件,以减少维护的难度。3.打开产生core文件的开关,以备进程dump后,可以协助定位问题。Page12效率1.编程时,要注重代码的执行效率,包括全局效率、局部效率、时间效率和空间效率。2.循环体内的工作量最小化,在多重循环中,应将最忙的循环放在最内层;应该尽量的减少循环的嵌套。3.影响效率的部分一般都出现在算法、逻辑以及函数结构上。4.要集中精力关注调用极其频繁的函数的代码效率。5.避免循环体内的判断语句,应将循环语句置于判断语句的代码之内。Page13质量保证1.在软件的设计中构筑软件质量;软件的质量是设计出来的,并非是测试出来的。2.代码质量保证的优先原则:正确性、稳定性/安全性、可测试性、规范性、效率、编程习惯。3.在哪申请的内存,一般就要求在哪里释放。4.一定要防止内存的越界,尽量使用strncpy、snprintf等函数。5.函数对使用的参数或者外来变量(包括全局变量)一定要考虑其值的合法性。6.尽量保证数据只有一处能引起变化的原因,其他地方只保持只读。7.写代码的时候,一定要注意差1的操作,主要表现在字符串、=等操作。8.有if的时候,尽量带上else;有elseif的时候,必须带上else,switch的时候,必须带上default。9.尽量避免goto的使用。10.程序必须具备其容错能力,尽量对一些错误能够进行补救。Page14代码编辑、编译、审查、维护1.通过代码走读及交互审查方式对代码进行检查。2.编写代码时,要注意随时保存,并尽快提交到配置库,以免造成因外部因素导致程序的损失。3.对于copy的代码,一定要小心又仔细的处理。4.具备条件的时候,可以采用pclint对代码进行检查,尤其是对新增的代码。Page15软件开发的思想1.分析-设计-编码-测试。2.模块化开发,自顶向下,高内聚,低耦合。3.敏捷开发,极限编程、测试驱动、自动构建。感谢!

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功