C++编程规范.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目录 0. 编程老手和高手的误区 1. 程序的版式 2. 命名规则 3. 表达式和基本语句 4. 函数设计 5. 内存管理 6. C++/C试题与答案,代码检查表 0. 编程老手和高手的误区 自我臭美的程序员 程序员不同于武林人士,我们不要崇拜邪派高手 大学计算机教育的失误:从来就没有重视质量,绝大多数学士、硕士、博士不了解软件质量,不知道如何有效地提高软件的质量。 高校毕业生C++/C编程考试的结果:程序质量低下 什么是编程老手:能够长期稳定地编写出高质量程序的程序员 什么是编程高手:能够长期稳定地编写出高难度、高质量程序的程序员 1. 程序的版式 1.1 文件结构 版权和版本 头文件的作用 头文件和定义文件的结构,正确使用include,ifndef/define/endif 目录结构 1.2 版式 空行,代码行 代码行内的空格 对齐 修饰符 * 的位置 注释 类的版式:public, private 前后之争 2. 命名规则 不要最求世界上最好的命名规则!在机构内部一致即可。 匈牙利法的利弊 一些共性规则: 直观并且可以拼读,可望文知意,不必“解码”。 名字的长度:min-length max-information 原则 与操作系统和开发工具的风格保持一致 程序中不要出现仅靠大小写区分的相似的标识符 程序中不要出现标识符完全相同的局部变量和全局变量 变量的名字应当使用“名词”或者“形容词+名词” 全局函数的名字应当使用“动词”或者“动词+名词”(动宾词组)。类的成员函数应当只使用“动词”,被省略掉的名词就是对象本身。 用正确的反义词组命名具有互斥意义的变量或相反动作的函数等 尽量避免名字中出现数字编号,如Value1,Value2等,除非逻辑上的确需要编号 3. 表达式和基本语句 3.1 表达式 如果代码行中的运算符比较多,用括号确定表达式的操作顺序,避免使用默认的优先级。 不要编写太复杂的复合表达式。 不要把程序中的复合表达式与“真正的数学表达式”混淆。例如 if (a b c) 3.2 你会编写正确的 if 语句吗 布尔变量与零值比较 整型变量与零值比较 浮点变量与零值比较 指针变量与零值比较 为什么有人用 If(NULL == P) 这样“古怪”的格式 3.3 循环语句 在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。 如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。 建议for语句的循环控制变量的取值采用“半开半闭区间”写法。 3.4 switch, goto … 4. 函数设计 4.1 参数的规则 参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字。 参数命名要恰当,顺序要合理。 示例 StringCopy(char *str1,char *str2) 如果参数是指针,且仅做输入用,则应在类型前加const,以防止该指针在函数体内被意外修改。 避免函数有太多的参数,参数个数尽量控制在5个以内。如果参数太多,在使用时容易将参数类型或顺序搞错。 尽量不要使用类型和数目不确定的参数。例如 printf 4.2 返回值的规则 不要省略返回值的类型。 函数名字与返回值类型在语义上不可冲突。例如 getchar 不要将正常值和错误标志混在一起返回。正常值用输出参数获得,而错误标志用return语句返回。 有时候函数原本不需要返回值,但为了增加灵活性如支持链式表达,可以附加返回值。例如 char *strcpy(char *strDest,const char *strSrc); 4.3 函数内部实现的规则:在函数体的“入口处”和“出口处”从严把关 在函数体的“入口处”,对参数的有效性进行检查。 在函数体的“出口处”,对return语句的正确性和效率进行检查。 4. 函数设计 4.4 一些建议 函数的功能要单一,不要设计多用途的函数。 函数体的规模要小,尽量控制在50行代码之内。 尽量避免函数带有“记忆”功能。相同的输入应当产生相同的输出。带有“记忆”功能的函数,其行为可能是不可预测的,因为它的行为可能取决于某种“记忆状态”。 不仅要检查输入参数的有效性,还要检查通过其他途径进入函数体内的变量的有效性,例如全局变量、文件句柄等。 用于出错处理的返回值一定要清楚,让使用者不容易忽视或误解错误情况。 4.5 使用断言 使用断言捕捉不应该发生的非法情况。不要混淆非法情况与错误情况之间的区别,后者是必然存在的并且是一定要做出处理的。 在函数的入口处,使用断言检查参数的有效性(合法性)。 在编写函数时,要进行反复的考查,并且自问:“我

文档评论(0)

神话 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:5203223011000000

1亿VIP精品文档

相关文档