C++编程规范 编程风格 学习 (3) -- 避免使用“魔数”

来源:互联网 发布:手机跑分用什么软件 编辑:程序博客网 时间:2024/06/06 18:54

避免使用“魔数”

    “程序设计并非魔术,所以不要故弄玄虚:要避免在代码中使用诸如42和3.14159这样的文字常量。它们本身并没有提供任何说明,并且因为增加了难于检测的重复和使维护更加复杂。可以使用 符号名称和表达式替换它们,比如width * aspectRatio。”

    名称能够增加信息,并提供单一的维护点,而程序中到处重复的原始数据是无名的,维护起来很麻烦。常量应该是枚举符或者const值,有合适的作用域和名称。

    这个说的很实际,有些公司的代码缺乏说明或者注释,更糟糕的是写代码的人离职了,他留下的“魔数”就成了坑,后面的继任者要看明白这“魔数”简单的还好办,复杂的,尤其是算法相关的,那就是杯具。

    实际的做法可以把这些数字或者字符串写死到文件中,并给它们一个合适的名称,与代码分开。这样做后续维护和检查都是方便。

    切记,避免使用宏来定义这些数值、字符串,而应该去用const常量。

    重要的特定于领域的常量应该放在名字空间一级。

const size_t PAGE_SIZE= 8192,     WORDS_PER_PAGE = PAGE_SIZE / sizeof(int),     INFO_BITS_PER_PAGE= 32 * CHAR_BIT;

    特定于类的常量,可以在类定义中定义静态整数常量,其他类型的常量需要单独的定义或者一个短小的函数。

// widget.hclass Widget{    static const int defaultWidth = 400;   //声明中提供的值    static const double defaultPercent;    //定义中提供的值    static const char* Name(){return “Widget”;}};// widget.cppconst double Widget::defaultPercent = 66.67;  //定义中提供的值const int Widget::defaultWidth;               //所需的定义 



 

原创粉丝点击