第八章 高质的量编程规范.ppt

  1. 1、本文档共61页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章 高质的量编程规范

阶段小节 版权的申明和头文件的结构及作用 命名的规则 代码的版式规则 空行 对齐 拆分 代码的注释 阶段小节 数值与0或者NULL的比较操作 内存分配注意细节 野指针 如何避免内存泄露 Const与define数据的差别 为什么要const数据 注释是对代码的“提示”,而不是文档。程序中的注释不可喧宾夺主,注释太多了会让人眼花缭乱。注释的花样要少。 如果代码本来就是清楚的,则不必加注释。否则多此一举,令人厌烦。例如 i++; // i 加 1,多余的注释; 边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。 注释应当准确、易懂,防止注释有二义性。错误的注释不但无益反而有害。 尽量避免在注释中使用缩写,特别是不常用缩写。 注释的位置应与被描述的代码相邻,可以放在代码的上方或右方,不可放在下方。 当代码比较长,特别是有多重嵌套时,应当在一些段落的结束处加注释,便于阅读。 使用断言捕捉不应该发生的非法情况。不要混淆非法情况与错误情况之间的区别,后者是必然存在的并且是一定要作出处理的。 在函数的入口处,使用断言检查参数的有效性(合法性)。 在编写函数时,要进行反复的考查,并且自问:“我打算做哪些假定?”一旦确定了的假定,就要使用断言对假定进行检查。 一般教科书都鼓励程序员们进行防错设计,但要记住这种编程风格可能会隐瞒错误。当进行防错设计时,如果“不可能发生”的事情的确发生了,则要使用断言进行报警。 8.2.1.3 If语句 布尔变量与零值比较 不可将布尔变量直接与TRUE、FALSE或者1、0进行比较。 例子: 假设布尔变量名字为flag,它与零值比较的标准if语句如下: if (flag) // 表示flag为真 if (!flag) // 表示flag为假 其它的用法都属于不良风格,例如: if (flag == TRUE) if (flag == 1 ) if (flag == FALSE) if (flag == 0) 8.2.1.3 If语句 整型变量与零值比较 整型变量用“==”或“!=”直接与0比较 例子: 假设整型变量的名字为value,它与零值比较的标准if语句如下: if (value == 0) if (value != 0) 不可模仿布尔变量的风格而写成 if (value) // 会让人误解 value是布尔变量 if (!value) 8.2.1.3 If语句 浮点变量与零值比较 不可将浮点变量用“==”或“!=”与任何数字比较 设法转化成“=”或“=”形式 例子: 假设浮点变量的名字为x,应当将 if (x == 0.0) // 隐含错误的比较 转化为 if ((x=-EPSINON) (x=EPSINON)) 其中EPSINON是允许的误差(即精度)。 8.2.1.3 If语句 指针变量与零值比较 指针变量用“==”或“!=”与NULL比较 例子: 与零值比较的标准if语句如下: if (p == NULL)// p与NULL显式比较,强调p是指针变量 if (p != NULL) 不要写成 if (p == 0) // 容易让人误解p是整型变量 if (p != 0) 或者 if (p) // 容易让人误解p是布尔变量 if (!p) 8.2.1.4 使用const提高函数的健壮性 const 用法: 定义常量 修饰函数的参数 修饰函数的返回值 修饰函数的定义体 8.2.1.4.1 用const修饰函数的参数 const只能修饰输入参数 特点 如果输入参数采用“指针传递”,那么加const修饰可以防止意外地改动该指针,起到保护作用 例:void StringCopy(char *strDestination, const char *strSource); 如果输入参数采用“引用传递 ”, 可以避免修改参数值的值传递 void Func(const A a) 8.2.1.4.2 用const修饰函数的返回值 如果给以“指针传递”方式的函数返回值加const修饰,那么函数返回值(即指针)内容不能被修改 例如函数 const char * GetString(void); 如下语句将出现编译错误: char *str = GetString(); 正确的用法是 const char *str = GetString(); 8.3.1 防止内存泄漏 内存分配方式 malloc/free 的使用要点 常见的内存错误及其对策 引用与指针的比较 指针与数

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档