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


    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;    //所需的定义
  • 相关阅读:
    前端下拉框
    使用Redis的有序集合实现排行榜功能
    python--list,str,dict,json,tuple互换用法实例
    微信支付
    C++创建及访问动态对象
    C++动态持久内存分配(new)
    C++函数与指针
    C++数组与指针
    C++指针基础
    MySQL再安装
  • 原文地址:https://www.cnblogs.com/dongerlei/p/5117351.html
Copyright © 2020-2023  润新知