其实lakos这本书讲述的问题很简单,就是包设计原则,这些原则跟OCP、DIP一样,在敏捷软件开发中都论述过,当然不是每个人都看懂了这些后面的原则;
但是,在C++语言中,你找不到包这个抽象概念所对应的东西,而且C++的链接过程有太多初学者没有弄明白的内容,而恰恰是这些内容破坏了文件的物理组织,加上大多数未经训练的软件开发者都没有将文件、目录当作包组织的概念,造成了大多数项目工程中代码组织的混乱,也许他们是好运的,没有遇上lakos它们那样,一个版本要编译一周的厄运;
其实lakos是想在这本书上提出一套规范,大家按照这套规范来设计具有良好物理组织的大规模C++软件,这曾经是老B为了兼容C的同时赋予自由散漫C++程序员的自由,但这些自由却成了C++程序员的噩梦;
稍后在C++基础之上改进的语言中,无不悄悄的加上了物理设计的限制,例如java中:
1、一个类只能放在一个源文件中,而不能像C++那样区分.h和.cpp,要是.h和.cpp的文件名还不一样怎么办,天哪。。。
2、一个.java只能有一个public class,这样的要求强制开发者去严肃对待源文件的物理组织,这个物理单元提供的接口是什么?哪些作为实现?;
3、没有了extern这样的链接指示符,避免了C++中两个毫无关系的obj,莫名的在链接时刻产生了依赖,java中一个import关键字的轻易搞定的依赖声明,在C++中lakos却要先保证.h/.cpp同名,然后还要禁止掉extern声明,他的idep工具才能正常工作,要是再遇到#include后面的大小写有区别。。。idep也不干活了。。。
整本书下来,lakos除了苦口婆心的告诉大家依赖危害性,如何建立起一套规范从物理上来改善依赖,如何从逻辑设计上避免引入依赖,最后的最后还给了一套用来分析依赖、度量依赖和检测循环依赖的idep工具集。
可惜的是,如此工程界大师的作品,却没人关注……
物理设计,在C++语言规范中被忽视的问题
对“物理设计,在C++语言规范中被忽视的问题”的回应
《大规模C++程序设计》热门书评
-
无用的书?有用的书
23有用 1无用 令狐虫 2005-08-31
这是一本定位很独特,甚至说有些奇怪的书。如果你想从该书中获得C++在实际使用中的经验或教训,你也许会失望。因为这本书里几乎都是十多行的小例子,而且这些例子并不比我们在TCPL、C++ Primer上看到的例子好多少。如果你想从该书中获得大型软件的设计经验,你也基本上会失望。因为这本书对系统设计的介绍...
-
物理设计,在C++语言规范中被忽视的问题
12有用 0无用 变成史努比 2007-08-05
其实lakos这本书讲述的问题很简单,就是包设计原则,这些原则跟OCP、DIP一样,在敏捷软件开发中都论述过,当然不是每个人都看懂了这些后面的原则;但是,在C++语言中,你找不到包这个抽象概念所对应的东西,而且C++的链接过程有太多初学者没有弄明白的内容,而恰恰是这些内容破坏了文件的物理组织,加上大...
-
程序员界大杯具,<<蜗居>>中的小贝是搞C++
8有用 3无用 第五象限 2009-12-18
《蜗居》第24集3:30秒截图,有理由相信小贝是搞 C++ 的。 桌子上那本书放大看是《大规模Cpp程序设计》,为无数想为cpp献身的人士叹惜呀。搞了一辈子C++,结果老婆跟了宋思明。 这部电视剧深刻揭露了C++程序员的杯具性。相信这个重大发现将彻底粉碎那些少年们对程序员这个职业的向往,这个时代女...
-
这本书有参考价值,但已经没有用处!
1有用 6无用 肖 2008-05-14
因为有Java,所以现在大型系统会首选java。这本书所讲述的问题java都可以解决,并且很elegant!谁叫咱们已经进入2008年了呢。C++已经不在适合在大型系统中担当重要角色。仅此而以。...
-
让我看完觉得相见恨晚的书
1有用 0无用 shany 2014-02-25
2006年的时候,我们开发了一个比较大的系统,开发参与人数有十几个(其实也不错),在但是的机器情况下,有时候只是动了一个头文件,会导致很长的编译时间,在这本书中可以找到答案。 《大规模C++程序设计》这本书是在2006年开发完一个相对较大的系统后读的一本书,当时看完,是少有的让我看完觉得相见恨晚的书...
书名: 大规模C++程序设计
作者: [美] John Lakos
出版社: 中国电力出版社
原作名: Large-Scale C++ Software Design
译者: 李师贤 | 明仲 | 曾新红 | 刘显明
出版年: 2003.9
页数: 624
定价: 72.00
装帧: 平装
ISBN: 9787508315041