我已经为公司的团队购买了这本书,或许是为了提高我们的设计技能并最终拥有更好的编程实践.在我阅读它时,我发现,大多数情况下,一组可以与模板一起使用的漂亮技巧,并且不确定它是否值得 - 而且不是有害的 - 将它合并到我们的代码中,从而引入代码复杂性/可读性和不可维护性.
我想从关注从业者那里了解到,你从那本书中得到了什么?对于专业软件开发而言,什么是相关和重要的,应该避免什么?
一般思考这本书以及它如何适应大型系统的软件开发(同样的,我喜欢John Lakos的书)?
Alexandrescu的影响是什么?
在标准模板使用之外,我发现关于通用C++编程的信息最有用的操作是能够使用模板为无效代码场景创建编译时错误.一旦掌握了它,就可以非常有效地将一个运行时错误类转换为编译时错误.
在工作中我做了很多成功.当然它会产生完全不可读的信息,我的同事偶尔也会说"世界上有什么东西?".但每次它都是一个bug而且他们无法编译它.我也非常评论这些特定的错误,希望它能够适度地理解.
大约在2005年,我深入研究了表达式模板和各种编译时技巧,以便使用非常有表现力的库,比如嵌入在C++中的内部特定于域的语言.特别是一个相当完整的嵌入式SQL事物,类似于.NET上的Linq.
对于用户来说,没关系.但对于除了我试图维持它之外的任何其他人,它提出了一个非常陡峭的学习曲线.这就是它的问题; 像任何"聪明"技术一样,它减少了可以维护它的人群.
这适用于广泛使用的类库,一般用户永远不需要理解其中的内容.但对于特定团队拥有的"内部"库,他们可能都需要能够对其进行修补或合理扩展.根据我的经验,C++模板更加神秘的可能性似乎排除了这一点.
虽然这很有趣.
如果您的公司/项目允许提升.这本书将帮助你发现一些助力魔法,只为你自己满意.
如果您的公司/项目不允许提升.这本书将是一个很好的指南,可以重新创建一些你最需要的boost部件,比如boost :: function.
我相信在每个项目中都有某种实用模块.这本书将通过借鉴一些书籍建议模式和SFINAE技巧,帮助您使"实用程序"更加通用和安全.
最重要的是,本书将展示如何重新思考一些GOF设计模式,将运行时多态性改为静态.