跟着软件产品的功用添加和版别的进步,代码越来越杂乱,源文件也越来越多,
关于软件开发人员来说,除了确保程序运转的正确性和进步代码的 运转功率之外,规
范风格的编码会对软件的晋级、修正、保护带来极大的便利性,也确保程序员不会陷
入“代码泥潭”中无法自拔。开发一个 老练的软件产品,除了有具体丰厚的开发文档
之外,有必要在编写代码的时分就有条有理,详尽谨慎。
以下的编码规范包含了程序排版、注 释、命名、可读性、变量、程序功率、质量
确保、代码编译、代码测验和版别操控等留意事项。
一、排版:
1.关键词和 操作符之间加恰当的空格。
2.相对独立的程序块与块之间加空行
3.较长的句子、表达式等要分红多行书写。
4. 区分出的新行要进行习气的缩进,使排版规整,句子可读。
5.长表达式要在低优先级操作符处区分新行,操作符放在新行之首。
6.循环、判别等句子中若有较长的表达式或句子,则要进行习气的区分。
7.若函数或进程中的参数较长,则要进行恰当的区分。
8.不允许把多个短句子写在一行中,即一行只写一条句子。
9.函数或进程的开端、结构的界说及循环、判别等句子中的代码都要选用缩进风格。
10.C/C++言语是用大括号‘{’和‘}’界定一段程序块的,编写程序块时‘{’和
‘}’应各独占一行而且坐落同一 列,一起与引证它们的句子左对齐。在函数体
的开端、类的界说、结构的界说、枚举的界说以及if、for、do、while、
switch、case句子中的程序都要选用如上的缩进办法。
二、注释
1.注释要简单明晰。
2.边写代码边注释,修正代码一起修正相应的注释,以确保注释与代码的一致性。
3.在必要的当地注释,注释量要适中。注释的内容要清楚、明晰,意义准确,避免
注释二义性。坚持注释与其描绘的代码相邻,即注释的就近 准则。
4.对代码的注释应放在其上方相邻方位,不行放在下面。
5.对数据结构的注释应放在其上方相邻方位,不行放在下面;对 结构中的每个域
的注释应放在此域的右方;同一结构中不同域的注释要对齐。
6.变量、常量的注释应放在其上方相邻方位或右 方。
7.大局变量要有较具体的注释,包含对其功用、取值规划、哪些函数或进程存取它
以及存取时留意事项等的阐明。
8.在每个源文件的头部要有必要的注释信息,包含:文件名;版别号;作者;生成
日期;模块功用描绘(如功用、首要算法、内部各部分之间 的联系、该文件与其
它文件联系等);首要函数或进程清单及本文件前史修正记载等。
9.在每个函数或进程的前面要有必要的注 释信息,包含:函数或进程称号;功用描
述;输入、输出及返回值阐明;调用联系及被调用联系阐明等。
三、命名
1.较短的单词可通过去掉“元音”构成缩写;
2.较长的单词可取单词的头几发符的优先级,并用括号清晰表 达式的操作次序,避
免运用默许优先级。
3.运用匈牙利表明法
四、可读性
1.避免运用不易了解的数字,用有意义的标识来替代。
2.不要运用难明的技巧性很高的句子。
3.源程序中联系较为严密的代码应尽或许相邻。
五、变量
1.去掉没必要的公共变量。
2.结构仅有一个模块或函数能够修正、创立,而其他有关模块或函数只拜访的公 共
变量,避免多个不同模块或函数都能够修正、创立同一公共变量的现象。
3.细心界说并清晰公共变量的意义、效果、取值规划 及公共变量间的联系。
4.清晰公共变量与操作此公共变量的函数或进程的联系,如拜访、修正及创立等。
5.当向公共变量传递数 据时,要非常当心,避免赋与不合理的值或越界等现象发生。
6.避免部分变量与公共变量同名。
7.细心规划结构中元素的布局与 摆放次序,使结构简单了解、节约占用空间,并减
少引起误用现象。
8.结构的规划要尽量考虑向前兼容和今后的版别晋级,并为 某些未来或许的运用保
留余地(如预留一些空间等)。
9.留神具体言语及编译器处理不同数据类型的准则及有关细节。
10.禁止运用未经初始化的变量。声明变量的一起对变量进行初始化。
11.编程时,要留意数据类型的强制转化。
六、函数、进程
1.函数的规划尽量约束在200行以内。
2.一个函数最好仅完结一件功用。
3.为简 单功用编写函数。
4.函数的功用应该是能够猜测的,也便是只需输入数据相同就应发生相同的输出。
5.尽量不要编写依赖于其他 函数内部完成的函数。
6.避免规划多参数函数,不运用的参数从接口中去掉。
7.用注释具体阐明每个参数的效果、取值规划及参 数间的联系。
8.查看函数一切参数输入的有效性。
9.查看函数一切非参数输入的有效性,如数据文件、公共变量等。
10.函数名应准确描绘函数的功用。
11.避免运用无意义或意义不清的动词为函数命名
12.函数的返回值要清楚、明晰,让 运用者不简单忽视过错状况。
13.清晰函数功用,准确(而不是近似)地完成函数规划。
14.削减函数自身或函数间的递归调 用。
15.编写可重入函数时,若运用大局变量,则应通过关中止、信号量(即P、V操作)
等手法对其加以保护。
七、可测性
1.在编写代码之前,应预先规划好程序调试与测验的办法和手法,并规划好各种调
测开关及相应测验代码如 打印函数等。
2.在进行集成测验/体系联调之前,要结构好测验环境、测验项目及测验用例,一起
细心分析并优化测验用例,以提 高测验功率。
八、程序功率
1.编程时要常常留意代码的功率。
2.在确保软件体系的正确性、安稳性、可读性及可测性的前提下,提 高代码功率。
3.不能一味地寻求代码功率,而对软件的正确性、安稳性、可读性及可测性形成影
响。
4.编程 时,要随时留神代码功率;优化代码时,要考虑周全。
5.要细心地结构或直接用汇编编写调用频频或功用要求极高的函数。
6.通 过对体系数据结构区分与安排的改善,以及对程序算法的优化来进步空间功率。
7.在多重循环中,应将最忙的循环放在最内层。
8.尽量削减循环嵌套层次。
9.避免循环体内含判别句子,应将循环句子置于判别句子的代码块之中。
10.尽量用乘法或其它方 法替代除法,特别是浮点运算中的除法。
九、质量确保
1.在软件规划进程中构筑软件质量。
代码质量确保优先准则
(1)正确性,指程序要完成 规划要求的功用。
(2)安稳性、安全性,指程序安稳、牢靠、安全。
(3)可测验性,指程序要具有杰出的可测验性。
(4)规范/可读性,指程序书写风格、命名规矩等要契合规范。
(5)大局功率,指软件体系的全体功率。
(6)部分功率,指 某个模块/子模块/函数的自身功率。
(7)个人表达办法/个人便利性,指个人编程习气。
2.只引证归于自己的存贮空间。
3.避免引证现已开释的内存空间。
4.进程/函数中分配的内存,在进程/函数退出之前要开释。
5.进程/函数中请求的(为 翻开文件而运用的)文件句柄,在进程/函数退出前要关
闭。
6.避免内存操作越界。
7.时间留意表达式是否会上溢、下 溢。
8.仔细处理程序所能遇到的各种犯错状况。
9.体系运转之初,要初始化有关变量及运转环境,避免未经初始化的变量被引 用。
10.体系运转之初,要对加载到体系中的数据进行一致性查看。
11.禁止随意更改其它模块或体系的有关设置和装备。
12.不能随意改动与其它模块的接口。
13.充沛了解体系的接口之后,再运用体系供给的功用。
14.要时间留意易混杂的操 作符。当编完程序后,应自始至终查看一遍这些操作符。
15.不运用与硬件或操作体系联系很大的句子,而运用主张的规范句子。
16.主张:运用第三方供给的软件开发工具包或控件时,要留意以下几点:
(1)充沛了解运用接口、运用环境及运用时留意事项。
(2)不能过火信任其正确性。
(3)除非必要,不要运用不熟悉的第三方工具包与控件。
十、代码编译
1.编写代码时要留意随时保存,并定时备份,避免因为断电、硬盘损坏等原因形成
代码丢掉。
2.同一项目组内,最好运用相同的编辑器,并运用相同的设置选项。
3.合理地规划软件体系目录,便利开发人员运用。
4.打 开编译器的一切告警开关对程序进行编译。
5.在同一项目组或产品组中,要一致编译开关选项。
6.运用工具软件(如 Visual SourceSafe)对代码版别进行保护。
十一、代码测验、保护
1.单元测验要求至少到达句子掩盖。
2.单元测验开端要盯梢每一条句子,并调查数据流及变量 的改变。
3.收拾、收拾或优化后的代码要通过检查及测验。
4.代码版别晋级要通过严厉测验。