您的位置:首页 > 编程语言 > C语言/C++

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

2013-01-02 12:37 316 查看

避免使用“魔数”

“程序设计并非魔术,所以不要故弄玄虚:要避免在代码中使用诸如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.h
class Widget
{
static const int defaultWidth = 400;   //声明中提供的值
static const double defaultPercent;    //定义中提供的值
static const char* Name(){return “Widget”;}
};
// widget.cpp
const double Widget::defaultPercent = 66.67;  //定义中提供的值
const int Widget::defaultWidth;               //所需的定义
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: