码迷,mamicode.com
首页 > 编程语言 > 详细

(C++编程规范第17条)避免使用”魔数“

时间:2016-01-09 22:47:00      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:

1、摘要:

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

2、讨论:

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

  经常会有此42可能非彼42的情形。更糟的是,如果程序员进行了一些心算(比如,”这个84是由5行代码前所用的42乘以2得到的“),那么以后需要用其他常量替换42的工作会变得既枯燥又易错。

  应该用符号常量替换直接写死的字符串。将字符串与代码分开(比如将字符串放入一个专门的.cpp文件或资源文件中),这样非程序员也能对其进行审查和更新,而且能够减少重复,还有助于国际化。

3、示例:

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

 

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

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

//文件    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;    //所需的定义

 

(C++编程规范第17条)避免使用”魔数“

标签:

原文地址:http://www.cnblogs.com/dongerlei/p/5117351.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!