C++ 最佳实践 | 7. 正确性和脚本
本系列是开源书C++ Best Practises的中文版,全书从工具、代码风格、安全性、可维护性、可移植性、多线程、性能、正确性等角度全面介绍了现代 C++项目的最佳实践。本文是该系列的第七篇,也是最后一篇。
正确性
避免无类型的接口
错误:
正确:
上面的方法虽然好点,但是仍然存在std::string
和std::filesystem::path
之间的双向隐式转换。
考虑使用如下类型安全库:
https://foonathan.net/type_safe/
https://github.com/rollbear/strong_type
请注意,更强的类型也意味着编译器可以做出更多优化。
启用脚本
脚本语言和编译语言的组合非常强大,既可以给我们喜欢的编译语言的好处(类型安全、性能、线程安全选项、一致的内存模型),又给了我们快速尝试新东西的灵活性,而不需要完全重新构建。
基于虚拟机的编译语言已经做到了这点: JRuby, Jython, IronRuby, IronPython
延伸阅读
注: 这系列启发了 O'Reilly 的系列视频: Learning C++ Best Practices
C++
The C++ Core Guidelines: 一组关于 C++编程的经过验证的准则、规则和最佳实践
The Ultimate Question of Programming, Refactoring, and Everything: 关于编程、重构以及一切的终极问题
LLVM Coding Standards: LLVM 编码标准
Google C++ Style Guide(请注意,我们没有遵循谷歌标准文档提出的某些建议,例如,它明确禁止使用异常,这使得无法实现 RAII。)
In-Depth: Static Code Analysis: John Carmack 关于静态分析优点的文章
Best Practice For C++ 11/14 Libraries: Nial Douglas 的最佳实践手册
CMake
CMake Documentation: 请注意,CMake 有
--warn
命令行选项,可以捕捉一些问题。
结语
最后,请试着扩展视野,尝试其他编程语言。其他语言有不同的构造和表达式,学习其他的东西会鼓励我们更有创造性的使用 C++,写出更干净、更有表现力的代码。
你好,我是俞凡,在 Motorola 做过研发,现在在 Mavenir 做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI 等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。
微信公众号:DeepNoMind
版权声明: 本文为 InfoQ 作者【俞凡】的原创文章。
原文链接:【http://xie.infoq.cn/article/41fe17879aed8a179cfad45df】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论