|
读过这本书吗?
最近在读
读过
想读
还不熟悉
|
图书城书列:
加入到博客或社交网站:
|
|
我来评论这本书:
内容提要:
本书中,C++大师Herb Sutter通过40个编程问题,不仅使读者“知其然”,更要“知其所以然”,帮助程序设计人员在软件中寻找恰到好处的折衷,即讨论如何在开销和功能性之间、优雅跟可维护性之间、灵活性与过分灵活之间寻找完美的平衡点。本书是围绕实际问题及其解决方案展开论述的,对一些至关重要的C++细节和相互关系提出了新的见解,为当今关键的C++编程技术(如泛型编程、STL、异常安全等)提供了新的策略。本书的目标是让读者在设计、架构和编码过程中保持良好的风格,从而使编写的C++软件更健壮、更高效。本书适合各个层次的C++程序员阅读。
作者简介:
Herb Sutter ISO C++标准委员会主席,C++ Users Journal杂志特邀编辑和专栏作家。他目前在微软公司领导.NET环境下C++语言扩展的设计工作。除本书外,他还撰写了三本广受赞誉的图书:C++Coding Standards、Exceptional C++和More Exceptional C++。
编辑推荐:
软件“风格”所要讨论的主题是如何在开销与功能之间、优雅与可维护性之间、灵活性与过分灵活之间寻找完美的平衡点。在本书中,著名的C++大师Herb Sutter给出了40个编程问题,其目的是为了使读者不仅“知其然”,更要“知其所以然”,并帮助读者在软件开发中进行正确的决策。
本书是围绕实际问题及其解决方案展开论述的,对一些至关重要的C++细节和相互关系提出了新的见解,为当今的关键C++编程技术(如泛型编程、STL、异常安全等)提供了新的策略。读者会在书中找到下列问题的答案。 ·可以从STL本身学习哪些库设计的知识? ·如何避免削弱甚至损害模板代码的通用性? ·为什么不应该对函数模板进行特化?正确的做法是什么? ·异常安全如何超越TRY和CATCH语句? ·什么情况下应当“泄漏”一个类的私有成分,怎么做? ·如何让一个类不受版本变动的影响? ·使用标准库容器的实际内存开销是多少? ·如何使用CONST才能真正优化代码? ·内联对程序性能有何影响? ·为什么有些看似错误的代码实际上却能够通过编译且运行得很好?为什么我们要关心这种情况? ·STD::STRING的设计有什么问题? 本书使读者能够在设计、架构和编码的过程中保持良好的风格,从而编写出更健壮和更高效的C++软件。 目录:
泛型编程与C++标准库 1
第1条 vector的使用 2 第2条 字符串格式化的“动物庄园”之一:sprintf 9 第3条 字符串格式化的“动物庄园”之二:标准的(或极度优雅的)替代方案 14 第4条 标准库成员函数 23 第5条 泛型性的风味之一:基础 26 第6条 泛型性的风味之二:够“泛”了吗 30 第7条 为什么不特化函数模板 36 第8条 友元模板 42 第9条 导出限制之一:基础 51 第10条 导出限制之二:相互影响,可用性问题以及准则 58 异常安全问题及相关技术 67 第11条 Try和Catch 68 第12条 异常安全性:值得吗? 72 第13条 对异常规格的实际考虑 75 类的设计、继承和多态 83 第14条 顺序,顺序! 84 第15条 访问权限的使用 88 第16条 (几乎)私有 93 第17条 封 装 101 第18条 虚 拟 110 第19条 对派生类施加规则 118 内存和资源管理 129 第20条 内存中的容器之一:内存管理的层次 130 第21条 内存中的容器之二:它到底有多大? 133 第22条 进行new操作,也许会抛出异常之一:new的方方面面 140 第23条 进行new操作,也许会抛出异常之二:内存管理中的实际问题 148 优化和效率 155 第24条 常量优化 156 第25条 再论内联 161 第26条 数据格式和效率之一:什么时候压缩是真正重要的 168 第27条 数据格式和效率之二:(甚至更少的)位操纵 172 陷阱、缺陷和谜题 179 第28条 不是关键字的关键字(或者:另一种注释) 180 第29条 这是初始化么? 186 第30条 要么double要么彻底完蛋 191 第31条 狂乱的代码 194 第32条 小小的拼写错误?鬼画符似的语言以及其他奇形怪状的东西 199 第33条 操作符,无处不在的操作符 202 风格案例研究 207 第34条 索 引 表 208 第35条 泛型回调 218 第36条 构造式union 226 第37条 分解std::string之一:概观std::string 242 第38条 分解std::string之二:重构std::string 247 第39条 分解std::string之三:给std::string瘦身 255 第40条 分解std::string之四:再论std::string 259 参考文献 267 译者序:
逍遥派武功讲究轻灵飘逸,闲雅清隽,丁春秋和虚竹这一交上手,但见一个童颜白发,宛如神仙,一个僧袖飘飘,冷若御风。两人都是一沾即走,当真便似一对花间蝴蝶,蹁跹不定,于这“逍遥”二字发挥到了淋漓尽致。旁观群雄于这逍遥派的武功大都从未见过,一个个看得心旷神怡,均想:“这二人招招凶险,攻向敌人要害,偏生姿式却如此优雅美观,直如舞蹈。这般举重若轻、潇洒如意的掌法,我可从来没见过……”
—— 金庸 《天龙八部》
金庸小说中描绘的逍遥派武功讲究的是飘逸灵动,然则绝非片面追求招式漂亮,招招看起来都优雅美观,但招招都攻往要害。
写代码也应如此。
毫无疑问,代码的目的是实现既定的功能,所以实用论者可..
前言:
布达佩斯,匈牙利的首都。一个炎热的夏日傍晚。穿过美丽的多瑙河望去,余晖中的东岸景色优美恬静。
本书封面上色彩柔和的欧洲风光中,哪栋建筑首先映入你的眼帘?几乎可以肯定,是照片左边的国会大厦。这栋巨大的新哥特式建筑以它优美的圆穹、直插天际的尖塔、不计其数的外墙雕塑以及其他华丽装饰一下攫住了你的目光,而它更引人注目之处,在于它与四周建筑在多瑙河畔那些刻板的实用建筑形成了极其鲜明的对照。
为什么会有这么大的差异呢?一方面,国会大厦是在1902年竣工的,而其他味同嚼蜡的建筑则大部分都是在二战以后建成的。
“啊哈,”你可能会想,“这的确解释了为什么差异如此之大。然而这与本书到底..
书摘:
前言 布达佩斯,匈牙利的首都。一个炎热的夏日傍晚。穿过美丽的多瑙河望去,余晖中的东岸景色优美恬静。
本书封面上色彩柔和的欧洲风光中,哪栋建筑首先映入你的眼帘?几乎可以肯定,是照片左边的国会大厦。这栋巨大的新哥特式建筑以它优美的圆穹、直插天际的尖塔、不计其数的外墙雕塑以及其他华丽装饰一下攫住了你的目光,而它更引人注目之处,在于它与四周建筑在多瑙河畔那些刻板的实用建筑形成了极其鲜明的对照。 为什么会有这么大的差异呢?一方面,国会大厦是在1902年竣工的,而其他味同嚼蜡的建筑则大部分都是在二战以后建成的。 “啊哈,”你可能会想,“这的确解释了为什么差异如此之大。然而这与本书到底有什么关系呢?” 毫无疑问,风格的表达与你在表达风格时灌注的哲学和思维方式是有很大关系的,这一点不管对于建筑学还是对于软件架构来说都同样适用。我相信你们都见过像封面上国会大厦那样宏伟而华丽的软件,我同样相信你们也见过仅能工作而且一团乱麻似的软件。从一个极端的角度来说,我相信你也见过许多过分追求风格反而弄巧成拙的华而不实之作和许多只顾尽快完成任务而毫无风格的“丑小鸭”(而且永远也不会变成天鹅)。 风格还是实用? 哪个更好? 不要太相信自己知道答案。一方面,除非你给出一个明确的标准,否则“更好”只是一个无意义的评价。对什么更好呢?在哪些方面更好呢?另一方面,答案几乎总是这两者的平衡,最开始总是“这取决于……”。 本书讨论的是如何在使用C++进行软件设计和实现的诸多细节方面找到最佳平衡点,如果更好地理解所拥有的工具和设施,弄清它们应该在什么时候应用。 快速回答:与四周索然无味的建筑相比,封面上的国会大厦是更好的建筑吗?其建筑风格更好吗?如果不加思索就给出答案,很可能你会说“当然”,但是别忘了,你还没有考虑其建造和修缮的代价呢: ? 建造。在1902年竣工之时,它是当时世界上最大的国会大厦。人们花费了难以想像的时间、不计其数的人力物力来兴建它,以至于许多人称它为“白象(white elephant)”,意思是耗资过大的美丽事物。考虑这样一个问题:比较起来,花费同样的投资能够建造多少幢周围那不美观、单调、或许干脆是令人厌烦的实用建筑?如果你是在一个工程进度压力远比这座国会大夏建造时代要大得多的行业工作,你又会怎么做? ? 修缮。你们中那些熟悉这座建筑 …… |