除了完全外行和真正的编程高手外,初读本书,你最先的感受将是惊慌:“哇!我以前捏造的C++/C程序怎么会有那么多的毛病?”
请花一两个小时认真阅读这本百页经书,你将会获益匪浅,这是前面N-1个读者的建议。
自从计算机问世以来,程序设计就成了令人羡慕的职业,程序员在受人宠爱之后容易发展成为毛病特多却常能自我臭美的群体。
如今在 Internet 上流传的“真正”的程序员据说是这样的:
(1) 真正的程序员没有进度表,只有讨好领导的马屁精才有进度表,真正的程序员会让领导提心吊胆。
(2) 真正的程序员不写使用说明书,用户应当自己去猜想程序的功能。
(3) 真正的程序员几乎不写代码的注释,如果注释很难写,它理所当然也很难读。
(6) 真正的程序员不写文档也不需要文档,只有看不懂程序的笨蛋才用文档。
(8) 真正的程序员不接受团队开发的理念,除非他自己是头头。
(9) 真正的程序员的程序不会在第一次就正确运行,但是他们愿意守着机器进行若干个 30 小时的调试改错。
(10) 真正的程序员不会在上午 9:00 到下午 5:00 之间工作,如果你看到他在上午 9:00 工作,这表明他从昨晚一直干到现在。
我从读大学到博士毕业十年来一直勤奋好学,累计编写了数十万行 C++/C 代码。有这样的苦劳和疲劳,我应该称得上是编程老手了吧?
在大学里从来没有人如此严格地考查过我的程序。我化了半个小时,修改了数次,他还不尽满意,让我回家好好琢磨。我精神抖擞地进“考场”,大汗淋漓地出“考场”。这“高手”当得也太窝囊了。我又好好地反省了一次。
( 1 )编程老手可能会长期用隐含错误的方式编程(习惯成自然),发现毛病后都不愿相信那是真的!
( 2 )编程高手可以在某一领域写出极有水平的代码,但未必能从全局把握软件质量的方方面面。
真的不是我“心狠手辣”或者要求过高,而是很多软件开发人员对自己的要求不够高。
定义 1 :能长期稳定地编写出高质量程序的程序员称为编程老手。
定义 2 :能长期稳定地编写出高难度、高质量程序的程序员称为编程高手。
根据上述定义,马上得到第一推论:我既不是高手也算不上是老手。
在写此书前,我阅读了不少程序设计方面的英文著作,越看越羞惭。因为发现自己连编程基本技能都未能全面掌握,顶多算是二流水平,还好意思谈什么老手和高手。希望和我一样在国内土生土长的程序员朋友们能够做到:
首先请做附录B的C++/C试题(不要看答案),考查自己的编程质量究竟如何。然后参照答案严格打分。
( 2)如果你考及格了,表明你的技术基础不错,希望你能虚心学习、不断进步。如果你还没有找到合适的工作单位,不妨到上海贝尔试一试。
( 3)如果你考出85分以上的好成绩,你有义务和资格为你所在的团队作“C++/C编程”培训。希望你能和我们多多交流、相互促进。半年前我曾经发现一颗好苗子,就把他挖到我们小组来。
( 4)如果你在没有任何提示的情况下考了满分,希望你能收我做你的徒弟。
光看本书对提高编程质量是有限的,建议大家阅读本书的参考文献,那些都是经典名著。
本书的大部分内容取材于作者一年前的书籍手稿(尚未出版),现整理汇编成为上海贝尔网络应用事业部的一个规范化文件,同时作为培训教材。
由于 C++/C 编程是众所周知的技术,没有秘密可言。编程的好经验应该大家共享,我们自己也是这么学来的。作者愿意公开本书的电子文档。
( 1 )读者可以任意拷贝、修改本书的内容,但不可以篡改作者及所属单位。
( 3 )如果竞争对手公司的员工得到本书,请勿公开使用,以免发生纠纷。
预计到 2002 年 7 月,我们将建立切合中国国情的 CMMI 3 级解决方案。届时,包括本书在内的约 1000 页规范将严格受控。
文章评论(0条评论)
登录后参与讨论