乐趣区

关于程序员:C最佳实践-7-正确性和脚本

本系列是开源书 C ++ Best Practises 的中文版,全书从工具、代码格调、安全性、可维护性、可移植性、多线程、性能、正确性等角度全面介绍了古代 C ++ 我的项目的最佳实际。本文是该系列的第七篇,也是最初一篇。

正确性

防止无类型的接口

谬误:

std::string find_file(const std::string &base, const std::string &pattern);

正确:

std::filesystem::path find_file(const std::filesystem::path &base, const std::regex &pattern);

下面的办法尽管好点,然而依然存在 std::stringstd::filesystem::path之间的双向隐式转换。

思考应用如下类型平安库:

  • https://foonathan.net/type_safe/
  • https://github.com/rollbear/strong_type

请留神,更强的类型也意味着编译器能够做出更多优化。

  • Sorting in C vs C++

启用脚本

脚本语言和编译语言的组合十分弱小,既能够给咱们喜爱的编译语言的益处(类型平安、性能、线程平安选项、统一的内存模型),又给了咱们疾速尝试新货色的灵活性,而不须要齐全从新构建。

基于虚拟机的编译语言曾经做到了这点: JRuby, Jython, IronRuby, IronPython

  • ChaiScript
  • AngelScript
  • luabind
  • sol2(用于 Lua 的绑定)
  • SWIG(简化的包装器和接口生成器)
  • pybind11(Python 和古代 C ++ 互操作性)

延长浏览

注: 这系列启发了 O ’Reilly 的系列视频: Learning C++ Best Practices

C++

  • The C++ Core Guidelines: 一组对于 C ++ 编程的通过验证的准则、规定和最佳实际
  • The Ultimate Question of Programming, Refactoring, and Everything: 对于编程、重构以及所有的终极问题
  • LLVM Coding Standards: LLVM 编码标准
  • C++ Programming Style Guidelines
  • Google C++ Style Guide(请留神,咱们没有遵循谷歌规范文档提出的某些倡议,例如,它明确禁止应用异样,这使得无奈实现 RAII。)
  • C++ Super-FAQ
  • cplusplus
  • In-Depth: Static Code Analysis: John Carmack 对于动态剖析长处的文章
  • Best Practice For C++ 11/14 Libraries: Nial Douglas 的最佳实际手册
  • cppcheck list of checks
  • EmptyCrate
  • StackOverflow C++ FAQ

CMake

  • CMake Documentation: 请留神,CMake 有 --warn 命令行选项,能够捕获一些问题。
  • learning-cmake
  • Basic CMake usage
  • Effective Modern CMake
  • It’s Time To Do CMake Right
  • An Introduction to Modern CMake

结语

最初,请试着扩大视线,尝试其余编程语言。其余语言有不同的结构和表达式,学习其余的货色会激励咱们更有创造性的应用 C ++,写出更洁净、更有表现力的代码。

你好,我是俞凡,在 Motorola 做过研发,当初在 Mavenir 做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI 等技术始终保持着浓重的趣味,平时喜爱浏览、思考,置信继续学习、一生成长,欢送一起交流学习。\
微信公众号:DeepNoMind

本文由 mdnice 多平台公布

退出移动版