📄 高质量c -c编程指南.doc
字号:
<P ALIGN="JUSTIFY">定义</FONT><FONT SIZE=3>1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:能长期稳定地编写出高质量程序的程序员称为编程老手。</P>
<P ALIGN="JUSTIFY">定义</FONT><FONT SIZE=3>2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:能长期稳定地编写出高难度、高质量程序的程序员称为编程高手。</P>
<P ALIGN="JUSTIFY">根据上述定义,马上得到第一推论:我既不是高手也算不上是老手。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">在写此书前,我阅读了不少程序设计方面的英文著作,越看越羞惭。因为发现自己连编程基本技能都未能全面掌握,顶多算是二流水平,还好意思谈什么老手和高手。希望和我一样在国内土生土长的程序员朋友们能够做到:</P>
<P ALIGN="JUSTIFY">(</FONT><FONT SIZE=3>1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)知错就改;</P>
<P ALIGN="JUSTIFY">(</FONT><FONT SIZE=3>2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)经常温故而知新;</P>
<P ALIGN="JUSTIFY">(</FONT><FONT SIZE=3>3</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)坚持学习,天天向上。</P>
<P ALIGN="JUSTIFY"></P>
</FONT><B><FONT FACE="宋体" LANG="ZH-CN" SIZE=4><P ALIGN="CENTER">二、本书导读</P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">	首先请做附录B的C++/C试题(不要看答案),考查自己的编程质量究竟如何。然后参照答案严格打分。</P>
<P ALIGN="JUSTIFY">(1)如果你只得了几十分,请不要声张,也不要太难过。编程质量差往往是由于不良习惯造成的,与人的智力、能力没有多大关系,还是有药可救的。成绩越差,可以进步的空间就越大,中国不就是在落后中赶超发达资本主义国家吗?只要你能下决心改掉不良的编程习惯,第二次考试就能及格了。</P>
<P ALIGN="JUSTIFY">(2)如果你考及格了,表明你的技术基础不错,希望你能虚心学习、不断进步。如果你还没有找到合适的工作单位,不妨到上海贝尔试一试。</P>
<P ALIGN="JUSTIFY">(3)如果你考出85分以上的好成绩,你有义务和资格为你所在的团队作“C++/C编程”培训。希望你能和我们多多交流、相互促进。半年前我曾经发现一颗好苗子,就把他挖到我们小组来。</P>
<P ALIGN="JUSTIFY">(4)如果你在没有任何提示的情况下考了满分,希望你能收我做你的徒弟。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">	编程考试结束后,请阅读本书的正文。</P>
<P ALIGN="JUSTIFY">	本书第一章至第六章主要论述C++/C编程风格。难度不高,但是细节比较多。别小看了,提高质量就是要从这些点点滴滴做起。世上不存在最好的编程风格,一切因需求而定。团队开发讲究风格一致,如果制定了大家认可的编程风格,那么所有组员都要遵守。如果读者觉得本书的编程风格比较合你的工作,那么就采用它,不要只看不做。人在小时候说话发音不准,写字潦草,如果不改正,总有后悔的时候。编程也是同样道理。</P>
<P ALIGN="JUSTIFY">	第七章至第十一章是专题论述,技术难度比较高,看书时要积极思考。特别是第七章“内存管理”,读了并不表示懂了,懂了并不表示就能正确使用。有一位同事看了第七章后觉得“野指针”写得不错,与我切磋了一把。可是过了两周,他告诉我,他忙了两天追查出一个Bug,想不到又是“野指针”出问题,只好重读第七章。</P>
<P ALIGN="JUSTIFY">光看本书对提高编程质量是有限的,建议大家阅读本书的参考文献,那些都是经典名著。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">	如果你的编程质量已经过关了,不要就此满足。如果你想成为优秀的软件开发人员,建议你阅读并按照</FONT><FONT SIZE=3>CMMI</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>规范做事,让自己的综合水平上升一个台阶。上海贝尔的员工可以向网络应用事业部软件工程研究小组索取</FONT><FONT SIZE=3>CMMI</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>有关资料,最好能参加培训。</P>
<P ALIGN="JUSTIFY"></P>
</FONT><B><FONT FACE="宋体" LANG="ZH-CN" SIZE=4><P ALIGN="CENTER">三、版权声明</P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">	本书的大部分内容取材于作者一年前的书籍手稿(尚未出版),现整理汇编成为上海贝尔网络应用事业部的一个规范化文件,同时作为培训教材。</P>
<P ALIGN="JUSTIFY">	由于</FONT><FONT SIZE=3>C++/C</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>编程是众所周知的技术,没有秘密可言。编程的好经验应该大家共享,我们自己也是这么学来的。作者愿意公开本书的电子文档。</P>
<P ALIGN="JUSTIFY">	版权声明如下:</P>
<P ALIGN="JUSTIFY">(</FONT><FONT SIZE=3>1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)读者可以任意拷贝、修改本书的内容,但不可以篡改作者及所属单位。</P>
<P ALIGN="JUSTIFY">(</FONT><FONT SIZE=3>2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)未经作者许可,不得出版或大量印发本书。</P>
<P ALIGN="JUSTIFY">(</FONT><FONT SIZE=3>3</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)如果竞争对手公司的员工得到本书,请勿公开使用,以免发生纠纷。</P>
<P ALIGN="JUSTIFY">	预计到</FONT><FONT SIZE=3>2002</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>年</FONT><FONT SIZE=3>7</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>月,我们将建立切合中国国情的</FONT><FONT SIZE=3>CMMI 3</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>级解决方案。届时,包括本书在内的约</FONT><FONT SIZE=3>1000</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>页规范将严格受控。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">	欢迎读者对本书提出批评建议。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="CENTER">林锐,</FONT><FONT SIZE=3>2001</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>年</FONT><FONT SIZE=3>7</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>月</P>
<P ALIGN="CENTER"></P>
<P ALIGN="CENTER"> </P>
</FONT><B><FONT FACE="宋体" LANG="ZH-CN" SIZE=5><P ALIGN="CENTER"><A NAME="_Toc520633988">第</FONT><FONT SIZE=5>1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=5>章</FONT><FONT SIZE=5> </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=5>文件结构</A></P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">每个</FONT><FONT SIZE=3>C++/C</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>程序通常分为两个文件。一个文件用于保存程序的声明(</FONT><FONT SIZE=3>declaration</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>),称为头文件。另一个文件用于保存程序的实现(</FONT><FONT SIZE=3>implementation</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>),称为定义(</FONT><FONT SIZE=3>definition</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)文件。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">C++/C</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>程序的头文件以“</FONT><FONT SIZE=3>.h</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>”为后缀,</FONT><FONT SIZE=3>C</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>程序的定义文件以“</FONT><FONT SIZE=3>.c</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>”为后缀,</FONT><FONT SIZE=3>C++</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>程序的定义文件通常以“</FONT><FONT SIZE=3>.cpp</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>”为后缀(也有一些系统以“</FONT><FONT SIZE=3>.cc</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>”或“</FONT><FONT SIZE=3>.cxx</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>”为后缀)。</P>
</FONT><B><FONT FACE="宋体" LANG="ZH-CN" SIZE=4><P><A NAME="_Toc520633989"></FONT><FONT FACE="Arial" SIZE=4>1.1 </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=4>版权和版本的声明</A></P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">版权和版本的声明位于头文件和定义文件的开头(参见示例</FONT><FONT SIZE=3>1-1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>),主要内容有:</P>
<P ALIGN="JUSTIFY">(</FONT><FONT SIZE=3>1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)版权信息。</P>
<P ALIGN="JUSTIFY">(</FONT><FONT SIZE=3>2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)文件名称,标识符,摘要。</P>
<P ALIGN="JUSTIFY">(</FONT><FONT SIZE=3>3</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)当前版本号,作者</FONT><FONT SIZE=3>/</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>修改者,完成日期。</P>
<P ALIGN="JUSTIFY">(</FONT><FONT SIZE=3>4</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)版本历史信息。</P>
<P ALIGN="JUSTIFY"></P></FONT>
<TABLE BORDER CELLSPACING=1 CELLPADDING=7 WIDTH=567>
<TR><TD VALIGN="TOP"><DIR>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">/*</P>
<P ALIGN="JUSTIFY">* Copyright (c) 2001,上海贝尔有限公司网络应用事业部</P>
<P ALIGN="JUSTIFY">* All rights reserved.</P>
<P ALIGN="JUSTIFY">* </P>
<P ALIGN="JUSTIFY">* 文件名称:<I>filename.h</P>
</I><P ALIGN="JUSTIFY">* 文件标识:<I>见配置管理计划书</P>
</I><P ALIGN="JUSTIFY">* 摘 要:<I>简要描述本文件的内容</P>
</I><P ALIGN="JUSTIFY">* </P>
<P ALIGN="JUSTIFY">* 当前版本:<I>1.1</P>
</I><P ALIGN="JUSTIFY">* 作 者:<I>输入作者(或修改者)名字</P>
</I><P ALIGN="JUSTIFY">* 完成日期:<I>2001年7月20日</P>
</I><P ALIGN="JUSTIFY">*</P>
<P ALIGN="JUSTIFY">* 取代版本:</FONT><I><FONT SIZE=3>1.0 </P>
</I></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">* 原作者 :<I>输入原作者(或修改者)名字</P>
</I><P ALIGN="JUSTIFY">* 完成日期:<I>2001年5月10日</P></DIR>
</I><P ALIGN="JUSTIFY">*/</P>
<P ALIGN="JUSTIFY"></FONT></TD>
</TR>
</TABLE>
<DIR>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=1><P ALIGN="CENTER">示例1-1 版权和版本的声明</P></DIR>
</FONT><B><FONT FACE="宋体" LANG="ZH-CN" SIZE=4><P><A NAME="_Toc520633990"></FONT><FONT FACE="Arial" SIZE=4>1.2 </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=4>头文件的结构</A></P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">头文件由三部分内容组成:</P>
<P ALIGN="JUSTIFY">(</FONT><FONT SIZE=3>1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)头文件开头处的版权和版本声明(参见示例</FONT><FONT SIZE=3>1-1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)。</P>
<P ALIGN="JUSTIFY">(</FONT><FONT SIZE=3>2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)预处理块。</P>
<P ALIGN="JUSTIFY">(</FONT><FONT SIZE=3>3</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)函数和类结构声明等。</P>
<P ALIGN="JUSTIFY">假设头文件名称为 graphics.h,头文件的结构参见示例</FONT><FONT SIZE=3>1-2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</P>
<P ALIGN="JUSTIFY"></P>
<UL>
<B><P ALIGN="JUSTIFY"><LI>【规则</FONT><FONT SIZE=3>1-2-1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>】</B>为了防止头文件被重复引用,应当用</FONT><FONT SIZE=3>ifndef/define/endif</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>结构产生预处理块。</LI></P>
<B><P ALIGN="JUSTIFY"><LI>【规则</FONT><FONT SIZE=3>1-2-2</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>】</B>用</FONT><FONT SIZE=3> </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>#include <</FONT><FONT SIZE=3>filename.h> </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。</LI></P>
<B><P ALIGN="JUSTIFY"><LI>【规则</FONT><FONT SIZE=3>1-2-3</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>】</B>用</FONT><FONT SIZE=3> </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>#include </FONT><FONT SIZE=3>“filename.h” </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。</LI></P></UL>
<UL>
<B><P ALIGN="JUSTIFY"><LI>【建议</FONT><FONT SIZE=3>1-2-1</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>】</B>头文件中只存放“声明”而不存放“定义”</LI></P></UL>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -