【C++学习笔记】:可维护性

避免使用编译宏

宏在编译之前被预处理器所替换,从而使得调试非常困难,因为调试器无法知道源代码来自哪里。

// Bad Idea
#define PI 3.14159;

// Good Idea
namespace my_project {
  class Constants {
  public:
    // if the above macro would be expanded, then the following line would be:
    //   static const double 3.14159 = 3.14159;
    // which leads to a compile-time error. Sometimes such errors are hard to understand.
    static constexpr double PI = 3.14159;
  };
}

避免使用布尔值作为函数参数

在阅读代码时,布尔值无法提供任何额外含义。可以创建一个名称更有意义的独立函数,或者传递含义更明确的枚举值。

避免使用裸循环

了解和理解现有C++标准算法,并付诸实践。

  • 参考cppreference[2]

  • 观看C++ Seasoning[3]

将对[]的调用看作是一种潜在的代码坏味道,表明没有在需要的地方使用合适的算法。

永远不要使用有副作用的assert

// Bad Idea
assert(set_value(something));

// Better Idea
[[maybe_unused]] const auto success = set_value(something);
assert(success);

在release版本中assert()将会被删除,从而造成set_value无法被调用。

虽然第二个版本更丑,但总比第一个错误版本好一点。

正确使用“override”和“final”

这些关键字使其他开发人员可以清楚知道虚函数可以被如何使用,如果虚函数的签名发生了变化,就可以捕获潜在错误,并有可能向编译器提示可以执行哪些优化

猜你喜欢

转载自blog.csdn.net/Jiangziyadizi/article/details/129372769
今日推荐