《C高质量编程3975.docx》由会员分享,可在线阅读,更多相关《C高质量编程3975.docx(168页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、高质量C+/C编程指南文件状态 草稿稿文件 正式文文件 更改改正式文件文件标识:当前版本:1.0作 者者:林锐 博士士完成日期:2001年年7月24日日版 本 历 史史版本/状态作作者参与者起止日期备注V 0.9草稿文件林锐锐2001-7-1至2001-7-18林锐起草V 1.0正式文件林锐锐2001-7-18至至2001-7-24朱洪海审查查V 0.99,林锐修正草稿中中的错误 目 录 前 言6第1章 文件结结构111.1 版权和和版本的声明明111.2 头文件件的结构121.3 定义文文件的结构131.4 头文件件的作用131.5 目录结结构14第2章 程序的的版式152.1 空行152.
2、2 代码行行162.3 代码行行内的空格172.4 对齐182.5 长行拆拆分192.6 修饰符符的位置192.7 注释202.8 类的版版式21第3章 命名规规则223.1 共性规规则223.2 简单的的WINDOOWS应用程程序命名规则则233.3 简单的的UNIX应应用程序命名名规则25第4章 表达式式和基本语句句264.1 运算符符的优先级264.2 复合表表达式274.3 IF 语句274.4 循环语语句的效率294.5 FORR 语句的循循环控制变量量304.6 SWIITCH语句句304.7 GOTTO语句31第5章 常量335.1 为什么么需要常量335.2 CONNST 与
3、#DEFIINE的比较较335.3 常量定定义规则335.4 类中的的常量34第6章 函数设设计366.1 参数的的规则366.2 返回值值的规则376.3 函数内内部实现的规规则396.4 其它建建议406.5 使用断断言416.6 引用与与指针的比较较42第7章 内存管管理447.1内存分配配方式447.2常见的内内存错误及其其对策447.3指针与数数组的对比457.4指针参数数是如何传递递内存的?477.5 FREEE和DELLETE把指指针怎么啦?507.6 动态内内存会被自动动释放吗?507.7 杜绝“野指针”517.8 有了MMALLOCC/FREEE为什么还要要NEW/DDELE
4、TEE ?527.9 内存耗耗尽怎么办?537.10 MAALLOC/FREE 的使用要点点547.11 NEEW/DELLETE 的的使用要点557.12 一些些心得体会56第8章 C+函数的高级级特性578.1 函数重重载的概念578.2 成员函函数的重载、覆覆盖与隐藏608.3 参数的的缺省值638.4 运算符符重载648.5 函数内内联658.6 一些心心得体会68第9章 类的构构造函数、析析构函数与赋赋值函数699.1 构造函函数与析构函函数的起源699.2 构造函函数的初始化化表709.3 构造和和析构的次序序729.4 示例:类STRIING的构造造函数与析构构函数729.5 不
5、要轻轻视拷贝构造造函数与赋值值函数739.6 示例:类STRIING的拷贝贝构造函数与与赋值函数739.7 偷懒的的办法处理拷拷贝构造函数数与赋值函数数759.8 如何在在派生类中实实现类的基本本函数759.9 一些心心得体会77第10章 类的的继承与组合合7810.1 继承承7810.2 组合合80第11章 其它它编程经验8211.1 使用用CONSTT提高函数的的健壮性8211.2 提高高程序的效率率8411.3 一些些有益的建议议85参考文献877附录A :C+/C代码码审查表88附录B :C+/C试题题93附录C :C+/C试题题的答案与评评分标准97前 言软件质量是被大大多数程序员员
6、挂在嘴上而而不是放在心心上的东西!除了完全外行行和真正的编编程高手外,初初读本书,你你最先的感受受将是惊慌:“哇!我以前前捏造的C+/C程序序怎么会有那那么多的毛病病?”别难过,作者者只不过比你你早几年、多多几次惊慌而而已。请花一两个小小时认真阅读读这本百页经经书,你将会会获益匪浅,这这是前面N-1个读者的的建议。一、编程老手与与高手的误区区自从计算机问世世以来,程序序设计就成了了令人羡慕的的职业,程序序员在受人宠宠爱之后容易易发展成为毛毛病特多却常常能自我臭美美的群体。如今在Inteernet上上流传的“真正”的程序员据据说是这样的的:(1)真正的的程序员没有有进度表,只只有讨好领导导的马屁
7、精才才有进度表,真真正的程序员员会让领导提提心吊胆。(2)真正的的程序员不写写使用说明书书,用户应当当自己去猜想想程序的功能能。(3)真正的的程序员几乎乎不写代码的的注释,如果果注释很难写写,它理所当当然也很难读读。(4)真正的的程序员不画画流程图,原原始人和文盲盲才会干这事事。(5)真正的的程序员不看看参考手册,新新手和胆小鬼鬼才会看。(6)真正的的程序员不写写文档也不需需要文档,只只有看不懂程程序的笨蛋才才用文档。(7)真正的的程序员认为为自己比用户户更明白用户户需要什么。(8)真正的的程序员不接接受团队开发发的理念,除除非他自己是是头头。(9)真正的的程序员的程程序不会在第第一次就正确确
8、运行,但是是他们愿意守守着机器进行行若干个300小时的调试试改错。(10)真正正的程序员不不会在上午99:00到下下午5:000之间工作,如如果你看到他他在上午9:00工作,这这表明他从昨昨晚一直干到到现在。具备上述特征越越多,越显得得水平高,资资格老。所以以别奇怪,程程序员的很多多缺点竟然可可以被当作优优点来欣赏。就就象在武侠小小说中,那些些独来独往、不不受约束且带带点邪气的高高手最令人崇崇拜。我曾经经也这样信奉奉,并且希望望自己成为那那样的“真正”的程序员,结结果没有得到到好下场。我从读大学到博博士毕业十年年来一直勤奋奋好学,累计计编写了数十十万行C+/C代码。有有这样的苦劳劳和疲劳,我我
9、应该称得上上是编程老手手了吧?我开发的软件都都与科研相关关(集成电路路CAD和33D图形学领领域),动辄辄数万行程序序,技术复杂杂,难度颇高高。这些软件件频频获奖,有有一个软件获获得首届中国国大学生电脑脑大赛软件展展示一等奖。在在1995年年开发的一套套图形软件库库到20000年还有人买买。罗列出这这些“业绩”,可以说明明我算得上是是编程高手了了吧?可惜这种个人感感觉不等于事事实。读博期间我曾用用一年时间开开发了一个近近10万行CC+代码的的3D图形软软件产品,我我内心得意表表面谦虚地向向一位真正的的软件高手请请教。他虽然然从未涉足过过3D图形领领域,却在几几十分钟内指指出该软件多多处重大设计
10、计错误。让人人感觉那套软软件是用纸糊糊的华丽衣服服,扯一下掉掉一块,戳一一下破个洞。我我目瞪口呆地地意识到这套套软件毫无实实用价值,一一年的心血白白化了,并且且害死了自己己的软件公司司。人的顿悟通常发发生在最心痛痛的时刻,在在沮丧和心痛痛之后,我作作了深刻反省省,“面壁”半年,重新新温习软件设设计的基础知知识。补修“内功”之后,又觉觉得腰板硬了了起来。博士士毕业前半年年,我曾到微微软中国研究究院找工作,接接受微软公司司一位资深软软件工程师的的面试。他让让我写函数sstrcpyy的代码。太容易了吧?错!这么一个小不点点的函数,他他从三个方面面考查:(1)编程风格格;(2)出错处理理;(3)算法复
11、杂杂度分析(用用于提高性能能)。在大学里从来没没有人如此严严格地考查过过我的程序。我我化了半个小小时,修改了了数次,他还还不尽满意,让让我回家好好好琢磨。我精精神抖擞地进进“考场”,大汗淋漓漓地出“考场”。这“高手”当得也太窝窝囊了。我又又好好地反省省了一次。我把反省后的心心得体会写成成文章放在网网上传阅,引引起了不少软软件开发人员员的共鸣。我我因此有幸和和国产大型IIT企业如华华为、上海贝贝尔、中兴等等公司的同志志们广泛交流流。大家认为为提高质量与与生产率是软软件工程要解解决的核心问问题。高质量量程序设计是是非常重要的的环节,毕竟竟软件是靠编编程来实现的的。我们心目中的老老手们和高手手们能否
12、编写写出高质量的的程序来?不见得都能!就我的经历与阅阅历来看,国国内大学的计计算机教育压压根就没有灌灌输高质量程程序设计的观观念,教师们们和学生们也也很少自觉关关心软件的质质量。勤奋好好学的程序员员长期在低质质量的程序堆堆中滚爬,吃吃尽苦头之后后才有一些心心得体会,长长进极慢,我我就是一例。现在国内IT企企业拥有学士士、硕士、博博士文凭的软软件开发人员员比比皆是,但但他们在接受受大学教育时时就“先天不足”,岂能一到到企业就突然然实现质的飞飞跃。试问有有多少软件开开发人员对正正确性、健壮壮性、可靠性性、效率、易易用性、可读读性(可理解解性)、可扩扩展性、可复复用性、兼容容性、可移植植性等质量属属
13、性了如指掌掌?并且能在在实践中运用用自如?。“高质量”可不是干活活小心点就能能实现的!我们有充分的理理由疑虑:(1)编程老手手可能会长期期用隐含错误误的方式编程程(习惯成自自然),发现现毛病后都不不愿相信那是是真的!(2)编程高手手可以在某一一领域写出极极有水平的代代码,但未必必能从全局把把握软件质量量的方方面面面。事实证明如此此。我到上海海贝尔工作一一年来,陆续续面试或测试试过近百名“新”“老”程序员的编编程技能,质质量合格率大大约是10。很少有人人能够写出完完全符合质量量要求的iff语句,很多多程序员对指指针、内存管管理一知半解解,。领导们不敢相信信这是真的。我我做过现场试试验:有一次次部
14、门新进114名硕士生生,在开欢迎迎会之前对他他们进行“C+/CC编程技能”摸底考试。我我问大家试题题难不难?所所有的人都回回答不难。结结果没有一个个人及格,有有半数人得零零分。竞争对对手公司的朋朋友们也做过过试验,同样样一败涂地。真的不是我“心心狠手辣”或者要求过过高,而是很很多软件开发发人员对自己己的要求不够够高。要知道华为、上上海贝尔、中中兴等公司的的员工素质在在国内IT企企业中是比较较前列的,倘倘若他们的编编程质量都如如此差的话,我我们怎么敢期期望中小公司司拿出高质量量的软件呢?连程序都编编不好,还谈谈什么振兴民民族软件产业业,岂不胡扯扯。我打算定义编程程老手和编程程高手,请您您别见笑。
15、定义1:能长期期稳定地编写写出高质量程程序的程序员员称为编程老老手。定义2:能长期期稳定地编写写出高难度、高高质量程序的的程序员称为为编程高手。根据上述定义,马马上得到第一一推论:我既既不是高手也也算不上是老老手。在写此书前,我我阅读了不少少程序设计方方面的英文著著作,越看越越羞惭。因为为发现自己连连编程基本技技能都未能全全面掌握,顶顶多算是二流流水平,还好好意思谈什么么老手和高手手。希望和我我一样在国内内土生土长的的程序员朋友友们能够做到到:(1)知错就改改;(2)经常温故故而知新;(3)坚持学习习,天天向上上。二、本书导读首先请做附录录B的C+/C试题(不不要看答案),考考查自己的编编程质
16、量究竟竟如何。然后后参照答案严严格打分。(1)如果你只只得了几十分分,请不要声声张,也不要要太难过。编编程质量差往往往是由于不不良习惯造成成的,与人的的智力、能力力没有多大关关系,还是有有药可救的。成成绩越差,可可以进步的空空间就越大,中中国不就是在在落后中赶超超发达资本主主义国家吗?只要你能下下决心改掉不不良的编程习习惯,第二次次考试就能及及格了。(2)如果你考考及格了,表表明你的技术术基础不错,希希望你能虚心心学习、不断断进步。如果果你还没有找找到合适的工工作单位,不不妨到上海贝贝尔试一试。(3)如果你考考出85分以以上的好成绩绩,你有义务务和资格为你你所在的团队队作“C+/CC编程”培训
17、。希望望你能和我们们多多交流、相相互促进。半半年前我曾经经发现一颗好好苗子,就把把他挖到我们们小组来。(4)如果你在在没有任何提提示的情况下下考了满分,希希望你能收我我做你的徒弟弟。编程考试结束束后,请阅读读本书的正文文。本书第一章至至第六章主要要论述C+/C编程风风格。难度不不高,但是细细节比较多。别别小看了,提提高质量就是是要从这些点点点滴滴做起起。世上不存存在最好的编编程风格,一一切因需求而而定。团队开开发讲究风格格一致,如果果制定了大家家认可的编程程风格,那么么所有组员都都要遵守。如如果读者觉得得本书的编程程风格比较合合你的工作,那那么就采用它它,不要只看看不做。人在在小时候说话话发音
18、不准,写写字潦草,如如果不改正,总总有后悔的时时候。编程也也是同样道理理。第七章至第十十一章是专题题论述,技术术难度比较高高,看书时要要积极思考。特特别是第七章章“内存管理”,读了并不不表示懂了,懂懂了并不表示示就能正确使使用。有一位位同事看了第第七章后觉得得“野指针”写得不错,与与我切磋了一一把。可是过过了两周,他他告诉我,他他忙了两天追追查出一个BBug,想不不到又是“野指针”出问题,只只好重读第七七章。光看本书对提高高编程质量是是有限的,建建议大家阅读读本书的参考考文献,那些些都是经典名名著。如果你的编程程质量已经过过关了,不要要就此满足。如如果你想成为为优秀的软件件开发人员,建建议你阅
19、读并并按照CMMMI规范做事事,让自己的的综合水平上上升一个台阶阶。上海贝尔尔的员工可以以向网络应用用事业部软件件工程研究小小组索取CMMMI有关资资料,最好能能参加培训。三、版权声明本书的大部分分内容取材于于作者一年前前的书籍手稿稿(尚未出版版),现整理理汇编成为上上海贝尔网络络应用事业部部的一个规范范化文件,同同时作为培训训教材。由于C+/C编程是众众所周知的技技术,没有秘秘密可言。编编程的好经验验应该大家共共享,我们自自己也是这么么学来的。作作者愿意公开开本书的电子子文档。版权声明如下下:(1)读者可以以任意拷贝、修修改本书的内内容,但不可可以篡改作者者及所属单位位。(2)未经作者者许可
20、,不得得出版或大量量印发本书。(3)如果竞争争对手公司的的员工得到本本书,请勿公公开使用,以以免发生纠纷纷。预计到20002年7月,我我们将建立切切合中国国情情的CMMII 3级解决决方案。届时时,包括本书书在内的约11000页规规范将严格受受控。欢迎读者对本本书提出批评评建议。林锐,20011年7月第1章 文件结结构每个C+/CC程序通常分分为两个文件件。一个文件件用于保存程程序的声明(ddeclarrationn),称为头头文件。另一一个文件用于于保存程序的的实现(immplemeentatiion),称称为定义(ddefiniition)文文件。C+/C程序序的头文件以以“.h”为后缀,
21、CC程序的定义义文件以“.c”为后缀,CC+程序的的定义文件通通常以“.cpp”为后缀(也也有一些系统统以“.cc”或“.cxx”为后缀)。1.1 版权和和版本的声明明版权和版本的声声明位于头文文件和定义文文件的开头(参参见示例1-1),主要要内容有:(1)版权信息息。(2)文件名称称,标识符,摘摘要。(3)当前版本本号,作者/修改者,完完成日期。(4)版本历史史信息。/* Copyrright (c) 22001,上上海贝尔有限限公司网络应应用事业部* All rrightss reseerved.* * 文件名称:filenname.hh* 文件标识:见配置管理理计划书* 摘 要:简要描描
22、述本文件的的内容* * 当前版本:1.1* 作 者:输入作作者(或修改改者)名字* 完成日期:2001年年7月20日日* 取代版本:1.0 * 原作者 :输入原作作者(或修改改者)名字* 完成日期:2001年年5月10日日*/示例1-1 版版权和版本的的声明1.2 头文件件的结构头文件由三部分分内容组成:(1)头文件开开头处的版权权和版本声明明(参见示例例1-1)。(2)预处理块块。(3)函数和类类结构声明等等。假设头文件名称称为 graaphicss.h,头文文件的结构参参见示例1-2。l【规则1-2-1】为为了防止头文文件被重复引引用,应当用用ifndeef/deffine/eendif结
23、结构产生预处处理块。l【规则1-2-2】用用 #incclude 格式式来引用标准准库的头文件件(编译器将将从标准库目目录开始搜索索)。l【规则1-2-3】用用 #incclude “fileename.h” 格式式来引用非标标准库的头文文件(编译器器将从用户的的工作目录开开始搜索)。【建议1-2-1】头头文件中只存存放“声明”而不存放“定义”在C+ 语法法中,类的成成员函数可以以在声明的同同时被定义,并并且自动成为为内联函数。这这虽然会带来来书写上的方方便,但却造造成了风格不不一致,弊大大于利。建议议将成员函数数的定义与声声明分开,不不论该函数体体有多么小。【建议1-2-2】不不提倡使用全全
24、局变量,尽尽量不要在头头文件中出现现象exteern innt vallue 这类类声明。/ 版权和版版本声明见示示例1-1,此此处省略。#ifndeffGRAPHHICS_HH/ 防止止graphhics.hh被重复引用用#defineeGRAPHHICS_HH#includde / 引用用标准库的头头文件#includde “myheaader.hh” / 引用用非标准库的的头文件void Fuunctioon1();/ 全局局函数声明class BBox / 类结构构声明;#endif示例1-2 CC+/C头头文件的结构构1.3 定义文文件的结构定义文件有三部部分内容:(1)定义文文件开
25、头处的的版权和版本本声明(参见见示例1-11)。(2)对一些些头文件的引引用。(3)程序的的实现体(包包括数据和代代码)。假设定义文件的的名称为 ggraphiics.cppp,定义文文件的结构参参见示例1-3。/ 版权和版版本声明见示示例1-1,此此处省略。#includde “graphhics.hh”/ 引用用头文件/ 全局函数数的实现体void Fuunctioon1()/ 类成员函函数的实现体体void Boox:Drraw()示例1-3 CC+/C定定义文件的结结构1.4 头文件件的作用早期的编程语言言如Basiic、Forrtran没没有头文件的的概念,C+/C语言言的初学者虽虽
26、然会用使用用头文件,但但常常不明其其理。这里对对头文件的作作用略作解释释:(1)通过头文文件来调用库库功能。在很很多场合,源源代码不便(或或不准)向用用户公布,只只要向用户提提供头文件和和二进制的库库即可。用户户只需要按照照头文件中的的接口声明来来调用库功能能,而不必关关心接口怎么么实现的。编编译器会从库库中提取相应应的代码。(2)头文件能能加强类型安安全检查。如如果某个接口口被实现或被被使用时,其其方式与头文文件中的声明明不一致,编编译器就会指指出错误,这这一简单的规规则能大大减减轻程序员调调试、改错的的负担。1.5 目录结结构如果一个软件的的头文件数目目比较多(如如超过十个),通通常应将头
27、文文件和定义文文件分别保存存于不同的目目录,以便于于维护。例如可将头文件件保存于inncludee目录,将定定义文件保存存于sourrce目录(可可以是多级目目录)。如果某些头文件件是私有的,它它不会被用户户的程序直接接引用,则没没有必要公开开其“声明”。为了加强强信息隐藏,这这些私有的头头文件可以和和定义文件存存放于同一个个目录。第2章 程序的的版式版式虽然不会会影响程序的的功能,但会会影响可读性性。程序的版版式追求清晰晰、美观,是是程序风格的的重要构成因因素。可以把程序的版版式比喻为“书法”。好的“书法”可让人对程程序一目了然然,看得兴致致勃勃。差的的程序“书法”如螃蟹爬行行,让人看得得索
28、然无味,更更令维护者烦烦恼有加。请请程序员们学学习程序的“书法”,弥补大学学计算机教育育的漏洞,实实在很有必要要。2.1 空行空行起着分隔程程序段落的作作用。空行得得体(不过多多也不过少)将将使程序的布布局更加清晰晰。空行不会会浪费内存,虽虽然打印含有有空行的程序序是会多消耗耗一些纸张,但但是值得。所所以不要舍不不得用空行。l【规则2-1-1】在在每个类声明明之后、每个个函数定义结结束之后都要要加空行。参参见示例2-1(a)l【规则2-1-2】在在一个函数体体内,逻揖上上密切相关的的语句之间不不加空行,其其它地方应加加空行分隔。参参见示例2-1(b )/ 空行void Fuunctioon1(
29、) / 空行void Fuunctioon2() / 空行void Fuunctioon3() / 空行while (condiition)statemment1;/ 空行if (coonditiion) stateement22;elsestateement33;/ 空行statemment4; 示例2-1(aa) 函数之之间的空行 示例例2-1(bb) 函数内内部的空行2.2 代码行行l【规则2-2-1】一一行代码只做做一件事情,如如只定义一个个变量,或只只写一条语句句。这样的代代码容易阅读读,并且方便便于写注释。l【规则2-2-2】if、for、whilee、do等语句自自占一行,执执行
30、语句不得得紧跟其后。不不论执行语句句有多少都要要加。这样可可以防止书写写失误。示例2-2(aa)为风格良良好的代码行行,示例2-2(b)为为风格不良的的代码行。int widdth;/ 宽度度int heiight;/ 高度度int deppth;/ 深度度int widdth, hheightt, deppth; / 宽度高高度深度x = a + b;y = c + d;z = e + f;X aa + b; y = c + d; z = ee + f;if (widdth heighht) dosometthing();if (wwidth =”、“=”、“+”、“*”、“%”、“&”、“
31、|”、“”这类操操作符前后不不加空格。【建议2-3-1】对对于表达式比比较长的foor语句和if语句,为为了紧凑起见见可以适当地地去掉一些空空格,如foor (i=0; i10; ii+)和if (a=b) & (c= 2000) / 良好好的风格if(yearr=20000) / 不良良的风格if (a=b) & (c=bb&c=d) / 不良良的风格for (i=0; i10; ii+) / 良好好的风格for(i=00;i100;i+) / 不良良的风格for (i = 0; I 110; i +) / 过多多的空格x = a b ? a : bb; / 良好好的风格x=aFunccti
32、on(); / 不要要写成 b - Fuunctioon();示例2-3 代代码行内的空空格2.4 对齐l【规则2-4-1】程程序的分界符符和应独占一一行并且位于于同一列,同同时与引用它它们的语句左左对齐。l【规则2-4-2】 之内的的代码块在右边数格格处左对齐。示例2-4(aa)为风格良良好的对齐,示示例2-4(bb)为风格不不良的对齐。void Fuunctioon(intt x) / prrogramm codeevoid Fuunctioon(intt x) / prrogramm codeeif (connditioon) / prrogramm codeeelse / prrogr
33、amm codeeif (ccondittion) / prrogramm codeeelse / prrogramm codeefor (innitiallizatiion; ccondittion; updatte) / prrogramm codeefor (initiializaation; condditionn; upddate) / prrogramm codeeWhile (condiition) / prrogramm codeewhilee (connditioon) / prrogramm codee如果出现嵌套的的,则使使用缩进对齐齐,如: 示例2-4(aa) 风格良良
34、好的对齐 示例22-4(b) 风格不良良的对齐2.5 长行拆拆分l【规则2-5-1】代代码行最大长长度宜控制在在70至80个字符以以内。代码行行不要过长,否否则眼睛看不不过来,也不不便于打印。l【规则2-5-2】长长表达式要在在低优先级操操作符处拆分分成新行,操操作符放在新新行之首(以以便突出操作作符)。拆分分出的新行要要进行适当的的缩进,使排排版整齐,语语句可读。if (veery_loonger_variaable1 = veery_loonger_variaable122)& (verry_lonnger_vvariabble3 = verry_lonnger_vvariabble14)
35、& (verry_lonnger_vvariabble5 = verry_lonnger_vvariabble16) dossomethhing();virtuall CMattrix CCMultiiplyMaatrix (CMattrix lleftMaatrix, CMattrix rrightMMatrixx);for (veery_loonger_initiializaation; very_longeer_connditioon; very_longeer_upddate)dosomeethingg();示例2-5 长长行的拆分2.6 修饰符符的位置修饰符 * 和和 应该该靠近数据
36、类类型还是该靠靠近变量名,是是个有争议的的活题。若将修饰符 * 靠近数据据类型,例如如:int* x; 从语义上讲讲此写法比较较直观,即xx是int 类型的指针针。上述写法的弊端端是容易引起起误解,例如如:int* x, y; 此处处y容易被误误解为指针变变量。虽然将将x和y分行行定义可以避避免误解,但但并不是人人人都愿意这样样做。l【规则2-6-1】应应当将修饰符符 * 和 紧靠变量名名例如:char *name;int *x, yy;/ 此处处y不会被误误解为指针2.7 注释C语言的注释符符为“/*/”。C+语语言中,程序序块的注释常常采用“/*/”,行注释一一般采用“/”。注释通通常用于
37、:(1)版本、版版权声明;(2)函数接口口说明;(3)重要的代代码行或段落落提示。虽然注释有助于于理解代码,但但注意不可过过多地使用注注释。参见示示例2-6。l【规则2-7-1】注注释是对代码码的“提示”,而不是文文档。程序中中的注释不可可喧宾夺主,注注释太多了会会让人眼花缭缭乱。注释的的花样要少。l【规则2-7-2】如如果代码本来来就是清楚的的,则不必加加注释。否则则多此一举,令令人厌烦。例例如 i+; / i 加加 1,多余余的注释l【规则2-7-3】边边写代码边注注释,修改代代码同时修改改相应的注释释,以保证注注释与代码的的一致性。不不再有用的注注释要删除。l【规则2-7-4】注注释应当准确确、易懂,防防止注释有二二义性。错误误的注释不但但无益反而有有害。l【规则2-7-5】尽尽量避免在注注释中使用缩缩写,特别是是不常用缩写写。l【规则2-7-6】注注释的位置应应与被描述的的代码相邻,可可以放在代码码的上方或右右方,不可放放在下方。l【规则2-7-8】当当代码比较长长,特别是有有多重嵌套时时,应当在一一些段落的结结束处加注释释,便于阅读读。/* 函数介绍:* 输入参数:* 输出参数:* 返回值 :*/void Fuunctioon(flooat x, floaat y, floatt z) if () whilee () / ennd of whilee / en
限制150内