编程精粹

Steve Maguire

出版时间

2009-02-01

ISBN

9787115193162

评分

★★★★★
AI导读
核心看点
  • 微软内部编程实践总结,揭示高质量代码开发内幕
  • 强调断言、单元测试与代码逐条跟踪以消除随机错误
  • 虽针对C语言,但工程思想适用于所有主流编程语言
适合谁读
  • 追求代码健壮性与清晰度的C/C++程序员
  • 希望提升软件工程质量与调试技巧的开发者
  • 对微软经典编程方法论感兴趣的计算机从业者
读前提醒
  • 书中部分C语言特定细节可能过时,重在理解思想
  • 建议结合附录中的编码检查清单进行对照实践
  • 不要跳过调试步骤,利用工具尽早暴露潜在错误
读者共识
  • 与《代码大全》齐名的编程经典,短小精悍
  • 教会程序员用正确方式做事,避免低级错误
  • 虽出版多年,其工程实践理念依然具有指导意义

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "暴露错误的关键是消除错误发生的随机性。"
  • "在原型中使用更精确类型的缺陷是常常必须进行参数的显式类型转换,以消除类型不匹配的错误,即使参数的次序正确。"
  • "如果你发现自己正打算绕过某个步骤。而它恰恰可以很容易地用来查错,那么一定要阻止自己绕过。相反,要利用所能得到的每个工具进行查错。此外,单元测试虽然意味着查错,但如果你根本就不进行单元测试也是枉然。"
  • "对于程序员来说,无定义的特性就相当于非法的特征,因此要利用断言对其进行检查"
  • "在写断言的注解时,不必长篇大论。一般的方法时使用经过认真考虑过的间断文句,它可能比用一整段的文字系统地解释出每个细节地指导性更强。但要注意,不要在注解中建议解决问题的办法,除非你能确信它对其他程序员确有帮助。做注解的人当然不想让注解把别人引入歧途。"
  • "当编写代码时,要抓住一切机会对程序的结果进行验证(调用所有其它函数的瓶颈函数,是特别适于进行这种检查的好地方)。要尽可能地使用不同的算法,而目要使其不仅仅是同一算法的又一实现。通过使用不同的算法不仅可以发现算法实现中的错误,而且还增加了发现算法本身错误的可能性."
  • "“不要让事情很少发生。”因此我们需要确定子系统中可能发生哪些事情,并且使它们一定发生和经常发生。如果发现子系统中有极罕见的行为,要干方百计地设法使其重现。"
  • "对代码进行逐条跟踪的真正作用是它可以使我们观察到数据在函数中的流动。如果在对代码进行逐条跟踪时密切地注视数据流,就会帮助你查出下面这么多的错误:  上溢和下溢错误;  数据转换错误;  差1错误;  NULL指针错误;  使用废料内存单元错误(0xA3类错误);  用 = 代替 == 的赋值错误;  运算优先级错误;  逻辑错误。"
目录
1 a hypothetical compiler
2 assert yourself
3 fortify your subsystems
4 step through your code
5 candy-machine interfaces

显示全部
用户评论
学会了assert。
把程序写健壮写清晰的意识,犯错之后分析避免错误的设计和编码技巧。
体会:code review很重要。书中的例子很具体。C程序员都应对书中的bug pattern重视吧。
十来年前读的, 应该是所有C/C++程序员的必读书
微软四大名著之一,与《代码大全》齐名的一本书
第一次看的时候在上班期间大致地
从作者各种观点下对correctness first的执着可以窥见大部分内容真的是立足于工程实践角度。带过半吊子团队的人应该对这本书有强烈共鸣。。
给四分是因为说的是如何写好c程序。有部分语言特定的东西对大部分非c程序员没什么实用价值,当然看看知其所以然也是很好的。大部分是语言无关的良好实践,非常精彩。
醍醐灌顶,如果没机会接收顶级公司的培训,这个是自我提升的必读教程了。
收藏