1、摘要:

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

2、讨论:

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

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

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

3、示例:

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

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

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

//文件    widget.h
class Widget
{
static const int defaultWidth = //声明中提供的值
static const double defaultPercent; //定义中提供的值
static const char* Name(){return "Widget";}
};
//文件 widget.cpp
const double Widget::defaultPercent = 66.67; //定义中提供的值
const int Widget::defaultWidth; //所需的定义

最新文章

  1. HDNOIP201405杨辉三角
  2. XML理解
  3. GIT 如何删除某个本地的提交
  4. Keepalived高可用集群搭建(转载linuxIDC)
  5. RegisterClientScriptBlock CommandName 模块列 操作完成 提示
  6. Linux下搭建Oracle11g RAC(6)----安装Grid Infrastructure
  7. Delphi安装/卸载OCX控件的方法
  8. 初识Ajax技术
  9. 注意使用 BTREE 复合索引各字段的 ASC/DESC 以优化 order by 查询效率
  10. MySQL多数据源笔记2-Spring多数据源一主多从读写分离(手写)
  11. Oracle E-Business Suite Maintenance Guide Release 12.2(Patching Procedures)
  12. Go笔记之二:一个完整的播放器示例
  13. vue 中引用jquery
  14. MyBatis别名与util类技能了解
  15. pilicat-dfs 霹雳猫-分布式文件系统
  16. 贪吃蛇snake Java实现(二)
  17. spring mvc 的请求流程
  18. PHP多进程编之pcntl_fork
  19. 工作小应用:EXCEL查找两列重复数据
  20. Android.util.Log 关于Android开发中打印log

热门文章

  1. VS2010+Visual Assist X
  2. n!的近似值 (stirling approximation)与 大O记法(big -O- notation)
  3. jquery第四期:对象转换的小实例
  4. C#中log4net使用方法(一)
  5. SQLite语法
  6. Windows开机登录认证与Gina DLL
  7. Django学习笔记(一)
  8. HTTP头信息(转)--1
  9. Linux学习之tail命令
  10. 文件上传input type="file"样式美化