本文节选自一篇讨论c++20新特性的英文博客,原文由CSDN news新闻资讯主编翻译并发布:
https://blog.csdn.net/csdnnews/article/details/86386281
https://blog.csdn.net/csdnnews/article/details/86386281
过去在我们Unity,我们有一句玩笑,“你敢向代码库中添加Boost你就等着被开除吧”。我想这不是真的,因为我发现去年某个时候Boost.asio被加进了代码库,自那以后我对于编译速度极慢抱怨了很多次,因为include <asio.h>头文件会导致include 整个的<windows.h>头文件,而include这个头文件会导致“ macro name hijack”错误
一般来说,我们努力避免使用大多数STL。容器我们也用我们自己的,这样做的原因和创建EASTL是一样的:
- 不同平台/不同编译器下的行为更加一致,
- 非优化Build的性能更好,
- 更好地与我们自己的memory allocator和Tracking相集成,
- 其他一些容器,纯粹是出于性能原因(STL的unordered_map设计上快不起来,因为它要求是separately chained;而我们自己的哈希表使用开放寻址)。
- 大部分的标准库功能我们根本用不上。
然而。要说服每一位新员工(尤其是那些刚刚大学毕业的初级员工)需要时间,不能仅仅因为它被称为“Modern C++”就并不意味着它会更好, 也不能因它是C就意味着它很难理解、使用或者有很多bug。
就在几周前的工作中,我试图读懂我们自己写的一段代码,但是由于代码太复杂我实在理解不了它。我正在百无聊赖时,一位(初级)程序员过来问我,为什么我看起来像要焉了一样,我告诉他“我看不懂这段代码,对我来说它太复杂了。”他的第一反应是“哦,是旧式的C代码?”“不,恰恰相反!”我回答。因为我正在看的代码是某种template metaprogramming。这位初级程序员还没有接触到大型代码库,既没有用过C也没有用过C++,但有些东西已经让他相信“难以理解的”肯定是C代码。我怀疑现在的大学班级里都会直接说“C不好”,而不会解释到底是怎么回事;但这确实给未来的年轻程序员留下了这样的印象。
所以,我当然可以忽略C++中我不喜欢的那部分。但是,教育我现在的同事是很烦人的,因为许多人认为“现代的肯定就更好”或者“标准库就肯定比我们自己写的任何东西都好”。
本文节选自一篇讨论c++20新特性的英文博客,原文由CSDN news主编翻译并发布:
网友评论