无名图书
收藏
编程精粹
Steve Maguire
出版社
人民邮电出版社
出版时间
2009-02-01
ISBN
9787115193162
评分
★★★★★
标签
生物科学
书籍介绍
编写高质量的、没有bug的程序,是每位程序员所追求的目标。但随着软件规模越来越大,功能日趋复杂,这一目标变得越来越困难。 本书揭示了微软公司应对质量挑战、开发出世界级代码的技术内幕,作者在自己不断探索、实践和思考的基础上,系统总结了多年来指导微软各团队的经验,将其凝聚为许多切实可行的编程实践指导,可谓字字珠玑。正因如此,本书被公认为与《代码大全》齐名的编程技术名著,曾于1993年荣获有软件开发奥斯卡奖之称的Jolt生产效率大奖。书中内容主要针对C语言,但其中的思想对目前的各主流语言编程也完全适用。
AI导读
核心看点
微软内部编程实践总结,揭示高质量代码开发内幕
强调断言、单元测试与代码逐条跟踪以消除随机错误
虽针对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程序员没什么实用价值,当然看看知其所以然也是很好的。大部分是语言无关的良好实践,非常精彩。
醍醐灌顶,如果没机会接收顶级公司的培训,这个是自我提升的必读教程了。
你可能会关注的书籍
游戏编程精粹 1
德洛拉(Mark A.Deloura)
JavaScript编程精粹
[印度] Ved Antani
游戏编程精粹6
,Michael Dickheiser,,美 编
游戏编程精粹5
帕里斯特
游戏编程精粹4
柯姆斯
人民邮电出版社的其他书籍
查看全部
历史上最美的10个实验
George Johnson
Linux程序设计
Neil Matthew
勾股定理
Eli Maor
随机过程
伊藤 清(Kiyoshi Ito)
斯图尔特微积分(第九版·下)
[加] 詹姆斯·斯图尔特(James Stewart)
一定要不停记录自己
晴叙
下载
收藏