📄 三本絕佳小書.htm
字号:
cast down(向下转型)的动作<BR>条款40:透过 layering(分层技术)来模塑 has-a 或
is-implemented-in-terms-of 的关系<BR>条款41:区分 inheritance 和
templates<BR>条款42:明智地运用 private
inheritance(私有继承)<BR>条款43:明智地运用多重继承(multiple
inheritance,MI)<BR>条款44:说出你的意思并了解你所说的每一句话<BR><BR>第七章:杂项讨论(Miscellany)<BR>条款45:知道
C++(编译器)默默为我们完成和呼叫哪些函式<BR>条款46:宁愿编译和联结时出错,也不要执行时才错<BR>条款47:使用 non-local
static objects 之前先确定它已有初值<BR>条款48:不要对编译器的警告讯息视如不见<BR>条款49:尽量让自己熟悉 C++
标准程式库<BR>条款50:加强自己对 C++ 的了解<BR><BR></P><!--msthemeseparator-->
<P align=left><IMG src="三本絕佳小書.files/urbhorsa.gif"></P>
<P><IMG height=270 alt="more-effective-cpp.jpg (30509 bytes)"
src="三本絕佳小書.files/more-effective-cpp.jpg" width=213
border=1><BR><BR>【基本资料】<BR>书名:More Effective C++ : 35 New Ways to Improve
Your Programs and Designs<BR>作者:Scott Meyers<BR>出版:Addison Wesley,
0-201-63371-X, 1996<BR>定价:未标示<BR>页数:318<BR><BR>继 Effective C++ 之後,Scott
Meyers 於 1996 推出这本「续集」。条款变得比较少,页数倒是多了一些,原因是这次选材比「第一集」更高阶,尤其是第五章。Meyers
将此章命名为技术(Techniques),并明白告诉你,其中都是一些 patterns,例如 virtual ctors、smart
pointers、reference counting、proxy classes,double
dispatching┅等等。这一章的每个条款篇幅都在 15~30
页之谱,实在让人有「山穷水尽疑无路,柳暗花明又一村」之叹。<BR><BR>虽然出版年代稍嫌久远,本书并没有第二版,原因是当其出版之时(1996),C++
Standard 已经几乎定案,本书即依当时的标准草案而写。其间与现今之 C++ 标准规格几乎相同。可能变化的几个弹性之处,Meyers
也都有所说明与提示。读者可以连结作者提供的网址,看看上下两集的勘误与讨论(数量之多,令人惊恐。幸好多是技术讨论或文字斟酌,并没有什麽重大误失)。<BR><BR>本书第一页列有它所获得的赞誉。对於读者,这是一份值得叁考的资料,我试着把它们译为中文,条列於下:<BR><BR><FONT
color=#408080>※这是一本多方面发人深省的 C++ 书籍:不论在你偶尔用到的语言特性上,或是在你自以为十分熟悉的语言特性上。只有深刻了解
C++ 编译器如何解释你的码,你才有可能以 C++
语言写出稳健强固的软体。本书是协助你获得此等层级之了解过程中,一份极具价值的资源。读过本书之後,我感觉像是浏览了 C++
程式大师所检阅过的码,并获得许多极具价值的洞见。<BR>- Fred Wild, Vce President of
Technology,<BR>Advantage Software
echnologies<BR><BR>※本书内含大量重要的技术,这些技术是撰写优良 C++
程式所不可或缺的。本书解释如何设计和实作这些观念,以及潜伏在其他某些替代方案中的陷阱。本书亦含晚近加入之 C++
特性的详细说明。任何人如果想要好好地运用这些新特性,最好买一本并且放在随手可得之处,以备查阅。<BR>- Chrisopher J. Van
Wyk, Professor<BR>Mahematics and Computer Science, Drew
University<BR><BR>※这是一本具备工业强度的最佳书籍。对於已经阅读过 Effetive C++ 的人,这是完美的续集。<BR>-
Eric Nagler, ++ Instructor and Author,<BR>Univesity of California Santa
Cruz Extension<BR><BR>※More Effective C++ 是一本无微不至而且价值不扉的书籍,是 Scott 第一本书
Effective C++ 的续集。我相信每一位专业的 C++ 软体开发人员都应该读过并记忆 Effective C++ 和 More
Effective C++
两本书内的各种招式,以及其中重要(并且有时候不可思议)的语言面向。我强烈推荐这两本书给软体开发人员、测试人员、管理人员┅,每个人都可以从 Scott
专家级的知识与卓越的表达能力中获益。<BR>- Steve Burkett, Software
Consutant</FONT><BR><BR>以下列出 More Effective C++
的各个条款(我试着译为中文),一方面让这篇书评的实用性更高一些,一方面就让这些条款标题直接彰显它们的价值吧。<BR><BR>第一章:基础议题(Basics)<BR>条款1:仔细区别
pointers 和 references<BR>条款2:最好使用 C++ 转型运算子<BR>条款3:绝对不要以
polymorphically(多型)方式来处理阵列<BR>条款4:非必要不使用 default
constructor<BR><BR>第二章:运算子(Operators)<BR>条款5:对自定的型别转换函式保持警觉<BR>条款6:区别
increment/decrement 运算子的前序(prefix)和後序(postfix)型式<BR>条款7:千万不要多载化
&&, ||, 和 , 运算子<BR>条款8:了解各种不同意义的 new 和
delete<BR><BR>第三章:异常情况(Exceptions)<BR>条款9:利用 destructors 避免遗失资源<BR>条款10:在
constructors 内阻止资源的遗失(resource leaks)<BR>条款11:禁止异常讯息(exceptions)流出
destructors 之外<BR>条款12:了解「丢出一个
exception」与「传递一个叁数」或「呼叫一个虚拟函式」之间的差异<BR>条款13:以 by reference 方式捕捉
exceptions<BR>条款14:明智运用 exception specifications<BR>条款15:了解异常处理(exception
handling)的成本<BR><BR>第四章:效率(Efficiency)<BR>条款16:谨记 80-20 法则<BR>条款17:考虑使用
lazy
evaluation<BR>条款18:分期摊还预期的计算成本<BR>条款19:了解暂时性物件的来源<BR>条款20:协助完成「传回值最佳化(RVO)」<BR>条款21:利用多载化技术(overload)避免隐式型别转换<BR>条款22:考虑以运算子的复合型式(op=)取代其独身型式(op)<BR>条款23:考虑使用其他程式库<BR>条款24:了解
virtual functions、multiple inheritance、virtual base classes、runtime type
identification 所需的成本<BR><BR>第五章:技术(Techniques,又称 Idioms 或
Pattern)<BR>条款25:将 constructor 和 non-member functions 虚拟化<BR>条款26:限制某个
class 所能产生的物件数量<BR>条款27:要求(或禁止)物件产生於 heap 之中<BR>条款28:Smart
Pointers(精灵指标)<BR>条款29:Reference counting(叁用计数)<BR>条款30:Proxy
classes(替身类别、代理人类别)<BR>条款31:让函式根据一个以上的物件型别来决定如何虚拟化<BR><BR>第六章:杂项讨论(Miscellany)<BR>条款32:在未来时态下发展程式<BR>条款33:将非尾端类别(non-leaf
classes)设计为抽象类别(abstract classes)<BR>条款34:如何在同一个程式中结合 C++ 和
C<BR>条款35:让自己习惯使用标准的 C++ 语言</P>
<P><BR></P><!--msthemeseparator-->
<P align=left><IMG src="三本絕佳小書.files/urbhorsa.gif"></P>
<P><IMG height=281 alt="exceptional-Cpp.jpg (33071 bytes)"
src="三本絕佳小書.files/exceptional-Cpp.jpg"
width=223><BR><BR>【基本资料】<BR>书名:Exceptional C++ : 47 Engineering Puzzles,
Programming Problems, and Solutions<BR>作者:Herb Sutter<BR>出版:Addison
Wesley, 0-201-61562-2, 1999<BR>定价:US$
33.95<BR>页数:206<BR><BR>相较於前两本威名远播的老大哥,这本小书不但资历浅,作者也似乎不是那麽有名。真的不那麽有名吗?未必,这要看你熟悉哪个领域,在哪个领域活动而定。本书内容源自极受欢迎的
C++ 网际网路节目 Guru of the Week,作者Herb Sutter 正是这个网路节目的创办者,同时也是C++ Report
的专栏作家,以及网际网路讨论群 comp.lang.c++.moderated
的创始主持人。<BR><BR>本书的一个最大特色是,以实例进行的方式,告诉你如何以标准 C++ 进行软体工程。书中所列的实例,有些是棘手的
C++/OOP 疑难杂症,有些展示稳健强固且具扩充性的程式码。只需数分钟时间,你便可以拿书中一些 C++
设计问题和实作问题来挑战自己并且获得乐趣(是的,每个问题都有一个难度评分)。<BR><BR>每一个实例,都可以测验你的观念正确与否。书中许多主题与Effective
C++ 和 More Effective C++ 的条款相互辉映,一个实例之中可能隐含了 Meyers
两本书的数个条款的运用。顺带一提,这本书有老大哥 Scott Meyers 写序推荐。<BR><BR>以下列出 Exceptional C++
的各个条款(我试着译为中文),Sutter 下标题的方式不像 Meyers
那麽具有实用性。不过,这些标题大略呈现了本书的方向,所以,还是让它们自我说明吧。<BR><BR>第一章:泛型程式设计与 C++
标准程式库<BR>条款1:Iterators(泛型指标)<BR>条款2:无分大小写的字串 之一<BR>条款3:无分大小写的字串
之二<BR>条款4:将泛型容器(Generic Containers)的重用性扩张至最大 之一<BR>条款5:将泛型容器(Generic
Containers)的重用性扩张至最大
之二<BR>条款6:暂时物件<BR>条款7:使用标准程式库(再谈暂时物件)<BR><BR>第二章:Exception-Safety(异常情况下仍然安全)的主题与相关技术<BR>条款8:
撰写 Exception-Safe 程式码 之一<BR>条款9: 撰写 Exception-Safe 程式码 之二<BR>条款10:撰写
Exception-Safe 程式码 之三<BR>条款11:撰写 Exception-Safe 程式码 之四<BR>条款12:撰写
Exception-Safe 程式码 之五<BR>条款13:撰写 Exception-Safe 程式码 之六<BR>条款14:撰写
Exception-Safe 程式码 之七<BR>条款15:撰写 Exception-Safe 程式码 之八<BR>条款16:撰写
Exception-Safe 程式码 之九<BR>条款17:撰写 Exception-Safe 程式码 之十<BR>条款18:程式码复杂度
之一<BR>条款19:程式码复杂度 之二<BR><BR>第三章:Class 的设计与继承<BR>条款20:Class
技术<BR>条款21:改写(Overriding)虚拟函式<BR>条款22:Classes 之间的关系 之一<BR>条款23:Classes
之间的关系 之二<BR>条款24:使用/禁用
继承(Inheritance)<BR>条款25:物件导向程式设计<BR><BR>第四章:编译器防火墙(Firewalls)及 Pimpl
Idiom<BR>条款26:将编译时期的依存性最小化 之一<BR>条款27:将编译时期的依存性最小化 之二<BR>条款28:将编译时期的依存性最小化
之三<BR>条款29:编译防火墙(Compilation Firewalls)<BR>条款30:The "Fast Pimpl"
Idiom<BR><BR>第五章:名称查询(Name Lookup)、命名空间(Namespaes)、介面准则(Interface
Principle)<BR>条款31:名称查询与介面准则 之一<BR>条款32:名称查询与介面准则 之二<BR>条款33:名称查询与介面准则
之三<BR>条款34:名称查询与介面准则 之四<BR><BR>第六章:记忆体管理<BR>条款 35:记忆体管理 之一<BR>条款 36:记忆体管理
之二<BR>条款 37:auto_ptr<BR><BR>第七章:陷阱、易犯错误与反常作法<BR>条款 38:物件识别(Object
Identity)<BR>条款 39:自动转换(Automatic Conversions)<BR>条款 40:物件寿命(Object
Lifetimes)之一<BR>条款 41:物件寿命(Object Lifetimes)之二<BR><BR>第八章:杂项主题<BR>条款
42:变数的初始化<BR>条款 43:常数性的正确性(Const-Correctness)<BR>条款 44:转型(Casts)<BR>条款
45:真假值(bool)<BR>条款 46:转呼叫(Forwarding)函式<BR>条款 47:控制流程(Control
Flow)<BR></P>
<P><BR>●结语<BR><BR><FONT
color=#0000ff>理论与实务的结合,是每一位资讯从业人员希望达到的目标。过多的照本宣科,过少的实务经验(真正有价值的实务经验),却是目前资讯相关书籍的普遍写照。</FONT><BR><BR><FONT
color=#0000ff>Effective C++,More Effective C++, 和 Exceptional
C++</FONT>,这三本书不仅在实务面上提出极为宝贵的准则,并以丰富而扎实的理论基础,深入解释每一条准则背後的来龙去脉。可以相当程度地提升你的
C++ 程式技术与 OO 设计思维。<BR><BR>着名的语言专家 Benjamin Whorf 曾说:『<FONT
color=#0000ff>语言可以塑造人类思考的方式,并决定人类思考的内容</FONT>』。使用 C++ 语言,绝不仅只於使用 C++
编译器(很多人确是如此 ─ 虽然他们不自觉);重要的是运用隐含於语意之中的物件导向(Object
Oriented)观念与泛型(Genericity)观念,在软体设计阶段便创造出一个有弹性、易修改、适用未来时态的架构。<BR><BR>对於物件导向领域的生手,这三本书可以给你一个震憾教育,让你知道过去的写作是多麽地不严谨、观念是多麽地不成熟。或许这套书会促使很多自以为是的读者谦卑地认知自我的不足,并谦卑地终於知道什麽是井蛙、河鱼和燕雀。<BR><BR>至於物件导向个中老手,是的,这三本书为你整理出多年打滚所获的宝贵心得,佐以深度的学理探讨,必然让你有相见恨晚之叹。<BR><BR>--
the end<BR><BR><!--mstheme--></FONT></P></TD>
<TD vAlign=top width=46>
<P align=center><BR><!--mstheme--></FONT></P></TD></TR></TBODY></TABLE>
<P></P><!--mstheme--></FONT></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -