读TrinityCore源码有感

好吧,这个标题确实吹得有点大了。这几天趁下班回家简单调试了TrinityCore,读了部分代码,简单写下自己的看法。我毕业也将近2年而已,经历的公司也不多,所以可能观点不对不全面,但重在探讨。

1:关于服务器端能否用STL

我目前经历的两家游戏公司,服务器端都是自己造的STL,说难听点,就是自己造的极其劣质的containers,不外乎array,list,hash,tree这四种,用起来也是极其不顺手,更重要的没有实现配套的算法或者配套的算法也是性能堪忧,STL不仅仅是containers,containers + iterator + algorithm才组成了完整且强大的STL,单从STL中algorithm来说,连接containers与algorithm的是iterator,algorithm为不同containers提供了一套统一的接口(用到iterator traits技法),基本就是algorithm总能为提供的iterator做出最完美的实现。而看国内大部分公司造的轮子来说,哎,惨不忍睹。费力不讨好,用STL多好,毕竟大师级作品。如果读过陈硕的《linux C++服务器端编程》就知道,至少陈硕前辈表示完全允许使用STL。


2:关于服务器端内存碎片

这点和第1点有点重复,也许国内C++程序员(更多是服务器开发人员)对于内存碎片太过于担忧,更导致了STL在服务器端遭到了枪毙。但是看TrinityCore,则完美没有这种表现,里面改用STL的就用STL,如果实在内存吃不消,加上jemalloc这种也是一种极好的选择。关于服务器端是否需要担心内存碎片,这里有个很好的答案:http://www.zhihu.com/question/21894104


3:对新技术的看法

C++11的推行也有好几年了,但是纵观国内,不知道会使用甚至说愿意接触c++11的有多少人呢?殊不知大多数公司还停留在vc6/vc9以下。但是TrinityCore则是大量合理的使用C++11,lambda,move,forward,thread,lock,shared_ptr/weak_ptr, unordered_map都是非常好用的,可惜,至少在工作中是根本没机会使用。我自己以前也对C++11持摒弃态度,觉得它太复杂,但是放下心里包袱,认真学一下的话,会发现C++11不仅不恐怖,反而更方便。在部分公司无法推行,可能处于历史原因,或者是部分人没有一种钻研新技术的精神吧。

你可能感兴趣的:(技术杂谈)