《C++设计新思维》评价和勘误及问题
Advanced C++ Design - Generic Programming and Design Patterns Applied 的中译本
Andrei Alexandrescu 著 侯捷 於春景译 华中科技大学出版社
这本书后面时间的缘故,已经没有认真,因此本文章仅大致作为记录,谢绝参考!
评价:书的内在是一本好书,讲了很多的设计策略和如何使用模板来进行设计。但是,书中的表达方式我就不敢恭维了。侯捷,居然还算是一个名作家,不管是他翻译还是审校,都有不可推卸的责任:书中到处都有不符合语法规则的表达,到处都是不通顺的语句。不过,他好像还对此非常自豪,我呸!我的建议是:看看《人月神话》的翻译,侯捷就该回去学学小学生汉语。
因为下面的原因,里面的内容不一定准确和完整:
1、 最前面的3个章节看得很早;
2、 最后面的4个章节看得很匆忙,因为没时间了,图书馆的书,时间到了,要还;
3、 中间有很多地方看得不够认真,因为需要的时候可以再查。
勘误部分:
P12 1.6节:typedef WidgetManager< PrototypeCreator > MyWidgetManager;中模板PrototypeCreator没有参数;
P13 1.7节:Policies只能用来被继承(保护析构函数)
P14 1.9节:threading model(多线程模型)->thread model(线程模型)
实作 -> 实现
P18: ExtendWidgetclass -> ExtendedWidgetclass
P20: 降低相依性 -> 见地依赖性
P20: 因应设计的多样性 -> 考虑/兼顾设计的多样性
P21 Line8:容器 -> 协调器
P21 Reverse Line1:更动 -> 变化
P23: 外覆类 -> 包装类
P24 Reverse Line1:端视 -> 而视
P29 Reverse Line9:才知道 -> 就已经知道
P29 Reverse Line8:泛形 -> 泛型
P32 Line4:多载化(重载) -> 重载
P34 Reverse Line4:模板具现 -> 模板实例化
P43 Line10:删除“isStdFloat||”
P37 const可以两次,但reference不允许 P43
P44 Line16:删除“这玩意儿”
P45 Line14:last—first -> last – first
P43 Reverse Line2 isPrimitive 和P45 Reverse Line17、18 isStdStandard都没有,并且表达的东西应该一致
P46 Line6:删除“Int2Type<true>”
P46 Line16:缺少参数result
P48 Line5:裁制 -> 定制
P74 Line6: MuEventHandler -> WidgetEventHandler
P77Line4~6:逻辑
P80 Reverse Line14、Reverse Line16:array(译注:基类是vector)错误
P91 Line12:polymorphic错误
P100 Line8:“虚线”没有
P103 Reverse Line6:“Windows” -> “windows”
P142 Line5~7: P143 Reverse Line2~3:alloc -> malloc
P268 Reverse Line22:增加一个参数class TypesLhs
P278 Reverse Line18:增加“class”
问题部分:
P7: 无法特化结构指什么
模板内定义成员,成员未其子类,则产生无限循环(类模板不能有非指针成员?)
P15: 提供一个名为Lock的内部型别
使用:typename ThreadingModel<SmartPtr>::Lock guard(*this)
P18: assignment操作符 Exceptional C++条款41
P21: 型别转型:构造(目)和操作符(源)都有时用哪一个
P25: template<> struct CompileTimeChecker<flase>{};
-> template<> struct CompileTimeChecker<true>{};
(整体实现,局部特化)对应(整体无实现,局部特化)
P29 Line5:无具名的命名空间
P35 Line4:省屏中选
P42 Line10:template<class U,class V>
Struct PToMTraits<U,V::*>
-> template<class U,class V>
Struct PToMTraits<U::*>
P43-P44:代码未反应排除references to references 未使用isReference
P78:Pimpl手法 sutter2000 exceptional C++
C++程序库:STL、Boost、Loki、ACE
by:kangtian0