📄 高质量c -c编程指南.doc
字号:
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></FONT><A HREF="#_Toc520634044"><U><FONT SIZE=3 COLOR="#0000ff">8.4 </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">运算符重载</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</FONT><A HREF="#_Toc520634044">*</A></A></P>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></FONT><A HREF="#_Toc520634045"><U><FONT SIZE=3 COLOR="#0000ff">8.5 </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">函数内联</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</FONT><A HREF="#_Toc520634045">*</A></A></P>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></FONT><A HREF="#_Toc520634046"><U><FONT SIZE=3 COLOR="#0000ff">8.6 </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">一些心得体会</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</FONT><A HREF="#_Toc520634046">*</A></A></P></DIR>
<B><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></B></FONT><A HREF="#_Toc520634047"><B><U><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">第</FONT><FONT SIZE=3 COLOR="#0000ff">9</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">章</FONT><FONT SIZE=3 COLOR="#0000ff"> </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">类的构造函数、析构函数与赋值函数</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</B></FONT><A HREF="#_Toc520634047">*</A></A></P><DIR>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></FONT><A HREF="#_Toc520634048"><U><FONT SIZE=3 COLOR="#0000ff">9.1 </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">构造函数与析构函数的起源</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</FONT><A HREF="#_Toc520634048">*</A></A></P>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></FONT><A HREF="#_Toc520634049"><U><FONT SIZE=3 COLOR="#0000ff">9.2 </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">构造函数的初始化表</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</FONT><A HREF="#_Toc520634049">*</A></A></P>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></FONT><A HREF="#_Toc520634050"><U><FONT SIZE=3 COLOR="#0000ff">9.3 </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">构造和析构的次序</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</FONT><A HREF="#_Toc520634050">*</A></A></P>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></FONT><A HREF="#_Toc520634051"><U><FONT SIZE=3 COLOR="#0000ff">9.4 </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">示例:类</FONT><FONT SIZE=3 COLOR="#0000ff">String</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">的构造函数与析构函数</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</FONT><A HREF="#_Toc520634051">*</A></A></P>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></FONT><A HREF="#_Toc520634052"><U><FONT SIZE=3 COLOR="#0000ff">9.5 </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">不要轻视拷贝构造函数与赋值函数</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</FONT><A HREF="#_Toc520634052">*</A></A></P>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></FONT><A HREF="#_Toc520634053"><U><FONT SIZE=3 COLOR="#0000ff">9.6 </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">示例:类</FONT><FONT SIZE=3 COLOR="#0000ff">String</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">的拷贝构造函数与赋值函数</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</FONT><A HREF="#_Toc520634053">*</A></A></P>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></FONT><A HREF="#_Toc520634054"><U><FONT SIZE=3 COLOR="#0000ff">9.7 </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">偷懒的办法处理拷贝构造函数与赋值函数</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</FONT><A HREF="#_Toc520634054">*</A></A></P>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></FONT><A HREF="#_Toc520634055"><U><FONT SIZE=3 COLOR="#0000ff">9.8 </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">如何在派生类中实现类的基本函数</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</FONT><A HREF="#_Toc520634055">*</A></A></P>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></FONT><A HREF="#_Toc520634056"><U><FONT SIZE=3 COLOR="#0000ff">9.9 </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">一些心得体会</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</FONT><A HREF="#_Toc520634056">*</A></A></P></DIR>
<B><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></B></FONT><A HREF="#_Toc520634057"><B><U><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">第</FONT><FONT SIZE=3 COLOR="#0000ff">10</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">章</FONT><FONT SIZE=3 COLOR="#0000ff"> </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">类的继承与组合</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</B></FONT><A HREF="#_Toc520634057">*</A></A></P><DIR>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></FONT><A HREF="#_Toc520634058"><U><FONT SIZE=3 COLOR="#0000ff">10.1 </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">继承</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</FONT><A HREF="#_Toc520634058">*</A></A></P>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></FONT><A HREF="#_Toc520634059"><U><FONT SIZE=3 COLOR="#0000ff">10.2 </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">组合</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</FONT><A HREF="#_Toc520634059">*</A></A></P></DIR>
<B><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></B></FONT><A HREF="#_Toc520634060"><B><U><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">第</FONT><FONT SIZE=3 COLOR="#0000ff">11</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">章</FONT><FONT SIZE=3 COLOR="#0000ff"> </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">其它编程经验</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</B></FONT><A HREF="#_Toc520634060">*</A></A></P><DIR>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></FONT><A HREF="#_Toc520634061"><U><FONT SIZE=3 COLOR="#0000ff">11.1 </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">使用</FONT><FONT SIZE=3 COLOR="#0000ff">const</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">提高函数的健壮性</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</FONT><A HREF="#_Toc520634061">*</A></A></P>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></FONT><A HREF="#_Toc520634062"><U><FONT SIZE=3 COLOR="#0000ff">11.2 </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">提高程序的效率</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</FONT><A HREF="#_Toc520634062">*</A></A></P>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></FONT><A HREF="#_Toc520634063"><U><FONT SIZE=3 COLOR="#0000ff">11.3 </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">一些有益的建议</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</FONT><A HREF="#_Toc520634063">*</A></A></P></DIR>
<B><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></B></FONT><A HREF="#_Toc520634064"><B><U><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">参考文献</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</B></FONT><A HREF="#_Toc520634064">*</A></A></P>
<B><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></B></FONT><A HREF="#_Toc520634065"><B><U><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">附录</FONT><FONT SIZE=3 COLOR="#0000ff">A </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">:</FONT><FONT SIZE=3 COLOR="#0000ff">C++/C</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">代码审查表</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</B></FONT><A HREF="#_Toc520634065">*</A></A></P>
<B><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></B></FONT><A HREF="#_Toc520634066"><B><U><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">附录</FONT><FONT SIZE=3 COLOR="#0000ff">B </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">:</FONT><FONT SIZE=3 COLOR="#0000ff">C++/C</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">试题</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</B></FONT><A HREF="#_Toc520634066">*</A></A></P>
<B><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P></B></FONT><A HREF="#_Toc520634067"><B><U><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">附录</FONT><FONT SIZE=3 COLOR="#0000ff">C </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">:</FONT><FONT SIZE=3 COLOR="#0000ff">C++/C</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3 COLOR="#0000ff">试题的答案与评分标准</U></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>	</B></FONT><A HREF="#_Toc520634067">*</A></A></P>
<B><FONT FACE="宋体" LANG="ZH-CN" SIZE=5><P ALIGN="CENTER"></P><A NAME="_Toc520633987">前</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">	</P>
<P ALIGN="JUSTIFY">软件质量是被大多数程序员挂在嘴上而不是放在心上的东西!</P>
<P ALIGN="JUSTIFY">	除了完全外行和真正的编程高手外,初读本书,你最先的感受将是惊慌:“哇!我以前捏造的C++/C程序怎么会有那么多的毛病?”</P>
<P ALIGN="JUSTIFY">	别难过,作者只不过比你早几年、多几次惊慌而已。</P>
<P ALIGN="JUSTIFY">	请花一两个小时认真阅读这本百页经书,你将会获益匪浅,这是前面N-1个读者的建议。</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>Internet</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>上流传的“真正”的程序员据说是这样的:</P>
<OL>
<P ALIGN="JUSTIFY"><LI>真正的程序员没有进度表,只有讨好领导的马屁精才有进度表,真正的程序员会让领导提心吊胆。</LI></P>
<P ALIGN="JUSTIFY"><LI>真正的程序员不写使用说明书,用户应当自己去猜想程序的功能。</LI></P>
<P ALIGN="JUSTIFY"><LI>真正的程序员几乎不写代码的注释,如果注释很难写,它理所当然也很难读。</LI></P>
<P ALIGN="JUSTIFY"><LI>真正的程序员不画流程图,原始人和文盲才会干这事。</LI></P>
<P ALIGN="JUSTIFY"><LI>真正的程序员不看参考手册,新手和胆小鬼才会看。</LI></P>
<P ALIGN="JUSTIFY"><LI>真正的程序员不写文档也不需要文档,只有看不懂程序的笨蛋才用文档。</LI></P>
<P ALIGN="JUSTIFY"><LI>真正的程序员认为自己比用户更明白用户需要什么。</LI></P>
<P ALIGN="JUSTIFY"><LI>真正的程序员不接受团队开发的理念,除非他自己是头头。</LI></P>
<P ALIGN="JUSTIFY"><LI>真正的程序员的程序不会在第一次就正确运行,但是他们愿意守着机器进行若干个</FONT><FONT SIZE=3>30</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>小时的调试改错。</LI></P>
<P ALIGN="JUSTIFY"><LI>真正的程序员不会在上午</FONT><FONT SIZE=3>9:00</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>到下午</FONT><FONT SIZE=3>5:00</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>之间工作,如果你看到他在上午</FONT><FONT SIZE=3>9:00</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>工作,这表明他从昨晚一直干到现在。</LI></P></OL>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">……</P>
</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">我开发的软件都与科研相关(集成电路</FONT><FONT SIZE=3>CAD</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>和</FONT><FONT SIZE=3>3D</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>图形学领域),动辄数万行程序,技术复杂,难度颇高。这些软件频频获奖,有一个软件获得首届中国大学生电脑大赛软件展示一等奖。在</FONT><FONT SIZE=3>1995</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>年开发的一套图形软件库到</FONT><FONT SIZE=3>2000</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>年还有人买。罗列出这些“业绩”,可以说明我算得上是编程高手了吧?</P>
<P ALIGN="JUSTIFY">可惜这种个人感觉不等于事实。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">读博期间我曾用一年时间开发了一个近</FONT><FONT SIZE=3>10</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>3D</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>图形软件产品,我内心得意表面谦虚地向一位真正的软件高手请教。他虽然从未涉足过</FONT><FONT SIZE=3>3D</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>图形领域,却在几十分钟内指出该软件多处重大设计错误。让人感觉那套软件是用纸糊的华丽衣服,扯一下掉一块,戳一下破个洞。我目瞪口呆地意识到这套软件毫无实用价值,一年的心血白化了,并且害死了自己的软件公司。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">人的顿悟通常发生在最心痛的时刻,在沮丧和心痛之后,我作了深刻反省,“面壁”半年,重新温习软件设计的基础知识。补修“内功”之后,又觉得腰板硬了起来。博士毕业前半年,我曾到微软中国研究院找工作,接受微软公司一位资深软件工程师的面试。他让我写函数</FONT><FONT SIZE=3>strcpy</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>的代码。</P>
<P ALIGN="JUSTIFY">太容易了吧?</P>
<P ALIGN="JUSTIFY">错!</P>
<P ALIGN="JUSTIFY">这么一个小不点的函数,他从三个方面考查:</P><DIR>
<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></DIR>
<P ALIGN="JUSTIFY">在大学里从来没有人如此严格地考查过我的程序。我化了半个小时,修改了数次,他还不尽满意,让我回家好好琢磨。我精神抖擞地进“考场”,大汗淋漓地出“考场”。这“高手”当得也太窝囊了。我又好好地反省了一次。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">我把反省后的心得体会写成文章放在网上传阅,引起了不少软件开发人员的共鸣。我因此有幸和国产大型</FONT><FONT SIZE=3>IT</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="JUSTIFY">现在国内</FONT><FONT SIZE=3>IT</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>企业拥有学士、硕士、博士文凭的软件开发人员比比皆是,但他们在接受大学教育时就“先天不足”,岂能一到企业就突然实现质的飞跃。试问有多少软件开发人员对正确性、健壮性、可靠性、效率、易用性、可读性(可理解性)、可扩展性、可复用性、兼容性、可移植性等质量属性了如指掌?并且能在实践中运用自如?。“高质量”可不是干活小心点就能实现的!</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"></P>
<P ALIGN="JUSTIFY">	事实证明如此。我到上海贝尔工作一年来,陆续面试或测试过近百名“新”“老”程序员的编程技能,质量合格率大约是</FONT><FONT SIZE=3>10</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>%。很少有人能够写出完全符合质量要求的</FONT><FONT SIZE=3>if</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>14</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>名硕士生,在开欢迎会之前对他们进行“</FONT><FONT SIZE=3>C++/C</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>编程技能”摸底考试。我问大家试题难不难?所有的人都回答不难。结果没有一个人及格,有半数人得零分。竞争对手公司的朋友们也做过试验,同样一败涂地。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">真的不是我“心狠手辣”或者要求过高,而是很多软件开发人员对自己的要求不够高。</P>
<P ALIGN="JUSTIFY">要知道华为、上海贝尔、中兴等公司的员工素质在国内</FONT><FONT SIZE=3>IT</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>企业中是比较前列的,倘若他们的编程质量都如此差的话,我们怎么敢期望中小公司拿出高质量的软件呢?连程序都编不好,还谈什么振兴民族软件产业,岂不胡扯。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">我打算定义编程老手和编程高手,请您别见笑。</P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -