有人说这本书很鸡肋,因为里面提到的很多东西深度不够的人看不懂,深度够了的人不看也 懂,所以没必要有单独出这样一本书。这种观点的可取之处在于,这本书确实需要一定的深 度才能体会作者的意思。我去年开始学C++,在看过《C++ Primer(评注版)》之后依陈硕 大大的建议买了这本书来看,结果一知半解,读到一半放弃了。那时候我以为是因为这本书 的中文翻译不好,读起来晦涩的缘故。后来我买了一本英文版回来,但是因为上班一直没时 间看,近来早起,抽空看完这本书。现在想来,中文版其实翻译的还是很不错的,作者的行 文风格偏莎士比亚,英文功底不够读起来其实很费劲。
作者是段子手
编码规范本是比较枯燥的内容,但是作者非常幽默。
内部状态暴露给别人就像给门上锁却把钥匙留在了锁上面。
使用
static_cast
来而不是dynamic_cast
来强转指针,就像为了每年省下9毛钱电费, 甘愿冒摔断腿的风险关着灯上楼梯。
这一类的比喻比比皆是。所以即使这里面的内容你都清楚,你也该读一读这本书,看看同一 个概念,不同的人是怎么解释的。
最佳实践的汇总
的确,如果你读过所有的Effective系列的书,也读过所有Exceptional系列的书,了解设计
模式,那么这本书里面的很多内容你的确都是知道的。这本书的特点在于它的短小,像是一
个备忘录或者是是一个小抄,放在手边随时翻一翻。这本书的另一种用法如作者所言是作为
代码审查的 check list
。
重点设计
这本书和很多其他书不同的地方在于,其实它讲了很多关于设计的内容。比如:职责规范,
继承与组合,模块划分,错误处理机制等等。和google cpp coding style[GCCS]
最大的
区别估计就在于此。[GCCS] 重点讲代码编写
的规范,而本书重点讲代码设计
的规范。
个人认为两者都必不可少,但是后者重要一些。
最有价值的一条
作者对于每一章节都会自己推荐一条最有价值的条款。一千个人眼中一千个哈姆雷特,对我 来说本书最有价值的条款是第32条,因为它解决了困扰我已久的问题,一个类到底应该怎么 去设计,答案老生常谈:it depends。