📄 编程精粹.txt
字号:
对这本书的评价:
这是我见过的关于提高编码过程质量技术方面的最好的书。虽然年代久远,我也多年不再使用标准C 编程(我长期用C++ ),但是这本书到现在为止仍然是我编码生涯中对我编写优质代码的技术上影响最大的书。该书以及其他的软件质量方面的理论CMM 、UML 、RUP 的侧重点各不相同,CMM 重流程和制度以及组织结构,UML 重设计(也涉及到了软件质量的内容,清晰的容易理解的规范的设计当然直接导致软件质量的全面提升),RUP 重视项目控制,《编程精粹》重视的是编码过程中的提高质量的技术。也就是说对于编码的程序员来说,CMM 、UML 和RUP 你虽然应该有所了解,但是这部分不是你主要工作的范畴,而《编程精粹》涉及的技术直接和你的工作相关。如果你是项目经理、高级分析和设计人员或者管理人员,那么《编程精粹》和你的关系并不很大。公司在重视代码质量之前,大部分程序员都没有动力去自觉学习提高代码质量的技术,即使有象《编程精粹》这样的书,也只有少部分非常自觉的程序员才会去看;一旦公司开始应用象CMM 、RUP 、UML 这些东东的时候,说明公司已经开始逐步重视软件质量,提高产品质量的压力会逐层传递到程序员,程序员必须为自己的代码质量负责。此时,由于CMM ,RUP ,UML 等都不是直接和代码质量直接相关的,程序员就会很困惑,为什么学习了这么多东西,但是在编码过程中却没什么应用,也提高不了多少编码过程本身的质量?这时候他们最需要的就是编码质量技术方面的知识。《编程精粹》就是一本这样的书。
··
Writing Solid Code
-Microsoft Techniques for Developing Bug-free C Programs
编程精粹
—Microsoft 编写优质无错C 程序秘诀
【美】Steve Maguire 著
姜静波 佟金荣 译
麦中凡 校
··
(京)新登字055 号
本书英文版由Microsoft Press 出版,中文版1993年5 月经Microsoft Corporation 授权予电子工业出版社独家出版,未经出版者书面许可,不得以任何形式或任何手段复制或抄袭本书内容。
Copyright(c) 1993 by Microsoft Corporation.
Original English language Edition Copyright(c) 1993 by Steve Maguire.
Publish by arrangement with the original publisher, Microsoft Press, a division of Microsoft Corporation, Redmond, Washington, U.S.A.
··
编程精粹
Microsoft 编写优质无错C 程序秘诀
【美】Steve Maguire 著
姜静波 佟金荣 译
麦中凡 校
责任编辑 邱雷南
*
电子工业出版社出版(北京市万寿路)
电子工业出版社发行 各地新华书店经销
人民卫生出版社印刷厂印刷
*
开本:787*1092毫米 1/16 印张:11 字数:250 千字
1993年6 月第1 版 1994 年2 月第2 次印刷
印数:5600 10600册 定价:20.00 元
ISBN 7-5O53-2042 4/TP·522
··
目录
序.....................................................I
某些背景.............................................III
命名约定..............................................IV
引 言................................................VI
第 1章 假想的编译程序.................................1
第 2章 自己设计并使用断言.............................8
第 3章 为子系统设防..................................31
第 4章 对程序进行逐条跟踪............................53
第 5章 糖果机界面....................................60
第 6章 风险事业......................................75
第 7章 编码中的假象..................................98
第 8章 剩下来的就是态度问题.........................115
后 记 走向何方.....................................129
附录 A 编码检查表...................................130
附录 B 内存登录例程.................................133
附录 C 练习答案.....................................140
参考文献.............................................160
·I·
序
————————————————
献给我的妻子Beth
以及我的双亲Joseph和Julia Maguire
—为了他们的爱和支持
序
1986年,在为几家小公司咨询和工作了10年之后,为了获得编写Macintosh 应用程序的经验,我特意到Microsoft 公司工作,参加了Macintosh Excel 开发小组。这个小组负责Microsoft 的图形电子表格应用程序的开发。
当时,我还不能肯定想象的代码是什么样子的,我想也许应该既引人入胜又雅致吧!但我看到的代码却很平常,与我以往见到的其它代码没有什么不同。要知道,Excel 有一个相当漂亮的用户界面—它比当时其他基于字符的电子表格软件更容易使用,更加直观。但使我感受更深的是产品中包含的一个多功能调试系统。
该系统旨在自动地向程序员和测试者进行错误报警。其工作方式非常象波音747 驾驶舱内向驾驶员报告故障的报警灯。该调试系统主要用来对代码进行监视,它并不过多地对代码进行测试。虽然现在该调试系统采用的概念已不再新鲜了,但当时它们的广泛使用程度以及该系统有效的查错能力还是吸引了我,使我深受启发。没过多久,我就发现Microsoft 的大部分项目都有多功能的内部调试系统,而且Microsoft 的程序员都高度重视代码中的错误及其产生原因。
在做了两年Macintosh Excel 之后,我离开了该开发小组,去帮助另一个代码错误数目超常的小组。在开发Execl 的两年中,我发现Microsoft 虽然壮大了两倍,但许多老项目组熟知的概念并没有随着公司的壮大而传到新项目组。新程序员并不象我加入Microsoft 之前时的老程序员一样,对容易引起错误的编码习惯特别重视,而只有一般的注意。
在我转到新项目组六个月之后,有一次我对一个程序员伙伴提到“应该把编写无错代码的某些概念写成文字,使那些原理能在新项目组传开”。这时另一位程序员对我说:“你不要总是想着写文档,为什么你不把这一切都写下来?为什么你不写本书,问问Microsoft 出版社是否愿意出版呢?毕竟这些信息不是谁的专利,其作用不过是为了使程序员更加重视错误。”
当时我对这个建议并没有多想,主要原因是没有时间,而且以前我也没有写过书,以前我所做过与写书最有关系的事情,不过是在80年代初协助别人主办Hi-Res杂志的程序设计专栏,这与写书毕竟不是一回事。
正如您所见到的,这本书还是写出来了。理由很简单:1980年,由于错误越来越多,Microsoft 取消了一个尚未公布的产品。现在,错误越来越多已经不是什么新鲜事情,Microsoft 的几个竞争者都因此而取消过一些项目。但Microsoft 因为这种原因取消项目,还是头一次。最近,随着接连不断地出现产品错误,管理人员终于开始叫嚷“受不了啦”,并采取了一系列的措施企图将错误率下降到原先的水平。尽管如此,仍然没有人将这些错误因由记录下来。
·II·
现在,Microsoft 已经比我刚进公司时大了九倍,很难设想,倘若没有准确的指南,公司怎样才能将出错率降低到原先的水平。尤其是在Windows 和Macintosh 的应用越来越复杂的情况下,更是如此。
以上就是我最终决定写这本书的原因。
Microsoft 出版社已经同意出版这本书。
情况就是这样。
我希望您会喜欢这本书,我力图使本书不那么枯燥并尽量有趣。
Steve Maguire
西雅图一华盛顿
1992.10.22
致谢
我要感谢Microsoft 出版社中帮助本书问世的所有人。尤其是在我写作过程中始终手把手地教我的两个人。首先我要感谢我的约稿编辑Mike Halvorson,他使我能够按照自己的进度完成了这本书,并且耐心地解答了我这个新作者提出的许多问题。我还要特别感谢我的责任编辑Erin O'Connor女士,她用了许多额外时间及早地对我写出的章节提出了反馈意见。没有他们的帮助,就不会有这本书,Erin还鼓励我以幽默的风格写这本书,她对文中的小俏皮话发笑当然不会使我不快。
我还要感谢我的父亲Joseph Maguire,是他在7O年代中期把我引入早期的微机世界:Altair、IMSAI 和Sol-20,使我与这一行结缘。我要感谢我于1981—83年在Valpar International工作时的伙伴Evan Rosen,他是对我职业生涯最有影响的几个人之一,他的知识以及洞察力在本书中都有所体现。还有Paul Davis,在过去的10年里,我与他在全国各地的许多项目中都有过愉快的合作,他也无疑地塑造了我的思维方式。
最后感谢花时间阅读本书草稿,并提供技术反馈意见的所有人。他们是:Mark Gerber,Melissa Glerum,Chis Mason,Dave Moore,John Rae-Grant和Alex Tilles 。特别感谢Eric Schlegel和Paul Davis,他们不仅是本书草稿的评审者,而且在本书内容的构思上对我早有帮助。
某些背景
本书用到了一些读者可能不太熟悉的软件和硬件系统的名称。下面对其中最常见的几个系统给出简单的描述:
·III·
Macintosh
Macintosh 是Apple 公司的图形窗口计算机,公布于1984年。它是最先支持“所见即所得”用户界面的流行最广的计算机。
Windows
Windows 是Microsoft 公司的图形窗口操作系统。Microsoft 公司1990年公布了Windows3.0,该版本明显好于其早期版本。
Excel
Excel 是Microsoft 公司的图形电子表格软件,1985年首次在Macintosh 上公布。随后在进行了大量的重写和排错工作后,被移植到Windows 上。多年来Macintosh Excel 和Windows Excel 共用一个名字,但程序所用的代码并不相同。
在本书中,我多次提到曾经当过Macintosh Excel 程序员这一经历。但应该说明的是。我的大部分工作是将Windows Excel 的代码移到Macintosh Excel 上,或者是实现与Windows Excel 相似的特征,我与该产品现在的惊人成功并没有特别的关系。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -