mlv*_*ljr 42 c++ architecture package-design
阅读亚马逊和ACCU的评论表明John Lakos的书" 大规模C++软件设计"可能是用于模块化的Rosetta Stone.
与此同时,这本书似乎非常罕见:没有多少人读过这本书,也没有盗版电子拷贝.
所以你怎么看?
Jor*_*ans 37
我已经阅读过它,并认为它是关于大型C++项目的一些实际问题的非常有用的书.如果您已经阅读了很多关于C++的内容,并且对物理设计及其含义有所了解,那么您可能在本书中找不到那么多"新"的东西.
另一方面,如果您的构建需要4个小时,并且您不知道如何减少它,请获取副本,阅读并全部使用.
您将很快开始编写物理上更好的代码.
[编辑]如果你想从某个地方开始,并且不能立即掌握这本书,我发现即使在阅读大规模C++设计之后,物理结构上的Games From Within系列也很有用.
mlv*_*ljr 18
有趣的是,"更多C++宝石"包含一个缩短(至88(!)页)的Lakos书籍版本,也可以在Google书籍上在线浏览(完全相信,因为它属于本书的前半部分).
所以,享受每个人的兴趣:)
Con*_*lls 15
Lakos曾经为制作EDA软件的Mentor Graphics工作.他参与了用C++构建EDA软件,他们希望有效地使用C++('不超过C代码的开销不超过5%')并理清如何在早期工作站上构建软件,这些软件真的需要很长时间来编译大型C++应用程序.
这本书非常好读 - 它讨论了各种各样的主题,Lakos确实知道他的东西.他真的来自于必须从C++编译器中获取高效代码的背景,以及如何设置C++程序以使其可维护并且编译和链接合理快速.
我认为Lakos有很多洞察力,我建议你阅读它.然而,从模板之类的功能可以广泛使用之前,它就是'trad'C++.我的副本不是出售; ^)
Lan*_*uck 11
我认为这本书在20世纪90年代后期很好.它已经过时了,现在和20世纪50年代的电话簿一样重要.
我和Lakos合作了几年,他试图实现这些想法.我还有我的现代C++项目,我用大约2000个源文件构建 - 足够大,我已经构建了一些.使用像冰淇淋这样的程序,通过并行分布式构建可以轻松减少构建时间.每个编译器都会缓存已打开的标题 - 只有通过做一些真正令人发指的事情,任何像scons这样的现代构建工具都会扩展到成千上万的翻译单元,而不会做任何特别的事情,包括测试在内的构建时间需要几分钟才能完成.
将您的库接口限制为一些"词汇类型"(与OO概念不同,他意味着只使用Int,float,string,char,以及其他一些我不记得的)是非常糟糕的建议任何东西.您的构建将寻找类型不匹配,您不希望在运行时只是为了更容易编写make文件.
这在很大程度上是本书的要点 - 我如何编写C++才能使用1993年的工具?此外,本书描述的Mentor Graphic项目是所有帐户的灾难.甚至这本书也暗示了这一点.
大规模C++以源代码形式提供 - 这些是"物理依赖",而不是链接库(本书从未提及其他更重要的依赖关系,如数据库,套接字,处理器体系结构等).
这本书充满了听起来不错的想法,但有更好的方法可以在实践中扩大规模.如果你想学习大型C++库,看看Boost或Xerces,看看他们做了什么.他们真的在实施大型项目,而不是写它们.
这有点过时了(实际上,它在写时已经过时了)。如果我没记错的话,其中很多是关于减少依赖关系的,您现在可能会对模板进行依赖。
尽管这可能是在大型项目上学习的课程之一,但是您通常不会使用最先进的功能和工具。