- 1、本文档共61页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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 的使用要点 常见的内存错误及其对策 引用与指针的比较 指针与数
您可能关注的文档
最近下载
- 2021年高原心脏病的研究进展(全文).docx VIP
- 2024年全国消防宣传月(全国消防日)专题课件.ppt
- 成套简历几何简约个人简历word简历模板.pdf VIP
- 2021-2023年上海二模分类汇编:文言文一-上海市十六区近三年(2021-2023)高考语文一模、二模试题分类汇编(解析版).pdf VIP
- 《安检理论与实务》教案 第8课 掌握常见违禁品的相关知识.docx
- 服务与服务计算.ppt VIP
- 行政执法人员执法行为规范课件.pptx
- 分部工程验收会议纪要范文15篇.docx
- 工业固体废物协同矿山地质环境修复治理项目环评环境影响报告书.docx
- 燃气热水锅炉招标文件常压.docx
文档评论(0)