从以上查询结果可以发现 utility 是用得最多的。如果 C++ 开发人员没有一个强大的 utility 程序框架支撑,那么他们将不得不花费大量的时间自己编写。
idlib 几乎提供了很多实用的类和方法,可用来处理字符串、容器和内存。这有利于提升开发人员的工作效率,让他们更加专注到游戏逻辑上。
5、容易理解
作为 C++ 开发人员应该都知道开发解析器和编译器并非易事,而 Doom3 成功实现了一个硬编码的编译器。并且 Doom3 的实现代码非常简洁也很容易理解。
下图展示了编译器使用的类之间的依赖关系:
以下是编译器源码的代码片段:
过去我也曾研究过很多解析器和编译器的源代码。但是,这是我第一次发现一个编译器的源代码如此易懂,除了编译器之外,整个 Doom3 的源代码也一样容易理解。这真的很神奇。当我深入研究 Doom3 的源代码时,发现这些代码真的写得太好了。
Doom3 的源代码只使用了 C++ 标准的一个子集,它非常简洁并且易于理解和维护。它遵循代码设计、命名和格式化的基本规范,并没有使用高级技术。
John Carmack 的编程秘诀是完全遵循维基百科定义的 KISS 原则:
KISS 是由美国海军在1960年提出的一项设计原则,KISS 是 “ Keep it simple, stupid ” 的缩写。KISS 原则指出,相比于复杂的系统,越简单的系统往往运行效果越好。因此简单性应当是设计过程中需要关注的关键指标,同时应当尽量避免不必要的复杂性。
KISS 原则的核心思想是:相比于复杂的系统,越简单的系统往往运行效果越好。
采用新C++标准时的注意事项
新标准引入了许多有趣的新功能。但是不要认为使用这些功能就可以让你的代码变得高效。实际上,许多新功能对开发通用库更为有用,特别是与通用编程相关的功能。
不要强迫自己使用所有的新功能,在绝真正需要或者有助于提高代码效率时使用即可。例如,这篇文章就讨论了过度使用 auto 关键字的缺点。