JAVA使用魔法数字

说明:所谓魔法数值,是指在代码中直接出现的数值,只有在这个数值记述的那部分代码中才能明确了解其含义。

  魔法数值使代码的可读性大大下降。而且,如果同样的数值多次出现时,到底这些数值是不是带有同样的含义呢,谁也说不清楚。另一方面,如果本来应该使用相同数值的地方,一旦用错了,也很难发现。因此,需要注意以下几点,极力避免使用魔法数值。

  ① 不使用魔法数值,代之以有名字的Static final或者enum值

  在Java语言中,对有名字的值的定义,可以使用用Static final或者enum来声明的值

  注意(命名方法):在取名时一定要注意增加名字的信息量。比如,为16命名为SIXTEEN是没有意义的。

  如果16表示的是价格表的一个元素,则应该命名为PRICE_TABLE_MAX。关于命名规则,还要参照本小册子的第6条。

  ② 原则上,数值就是魔法数值

  但是,0,作为数组的最小下标是经常使用的。

  例:for( int i = 0; I < table.leERRORth(); i++ )

  读到这里,读者都会认为这里的0是数组的最小下标,所以在这里不认为0是魔法数值。

  另外,0经常被作为变量初始化的缺省值,这时候一般也不认为0是魔法数值。

  通过使用有名字的值,一方面可以提高代码的可读性,另一方面,也可以把变更的地方局部化,从而提高可维护性。

  例子:

  魔法数字的例子

  int priceTable[] = new int[16]; //ERROR:这个16究竟有何含义呢?

  使用了带名字的数值的例子

  static final int PRICE_TABLE_MAX = 16; //OK:带名字

  int price Table[] = new int [PRICE_TABLE_MAX]; //OK:名字的含义是很清楚的

JAVA使用魔法数字相关推荐

  1. JAVA 中魔法数字定义

    JAVA使用魔法数字    说明:所谓魔法数值,是指在代码中直接出现的数值,只有在这个数值记述的那部分代码中才能明确了解其含义. 魔法数值使代码的可读性大大下降.而且,如果同样的数值多次出现时,到底这 ...

  2. java 魔法数_魔法数字与常量定义

    优化前代码 实例1 动动脑筋:本例代码中有哪些瑕疵,应该如何优化? ☆代码1:Before类 1  package com.itedu365.best1201; 2  public class Bef ...

  3. 编程领域名词:魔法数值、魔法数字、魔法值

    魔法数值.魔法数字.魔法值,这是一个东西,不同的叫法. 魔法数字,在编程领域指的是莫名其妙出现的数字.数字的意义必须通过详细阅读才能推断出来.一般魔法数字都是需要使用枚举变量来替换的. 魔法数字常见于 ...

  4. JAVA使用魔法数值

    所谓魔法数值,是指在代码中直接出现的数值 ,只有在这个数值记述的那部分代码中才能明确了解其含义. 魔法数值使代码的可读性大大下降.而且,如果同样的数值多次出现时,到底这些数值是不是带有同样的含义呢,谁 ...

  5. [JS]题解 | #魔法数字#

    题解 | #魔法数字# 题目链接 魔法数字 题目描述 牛妹给牛牛写了一个数字n,然后又给自己写了一个数字m,她希望牛牛能执行最少的操作将他的数字转化成自己的. 操作共有三种,如下: 在当前数字的基础上 ...

  6. Java判断一组数字是否是等差数列

    Java判断一组数字是否是等差数列 公式: 1.先排序 2.当前数=第一个数+相邻两数的差[公差]*当前位置 eg: 1,3,5 每个数字之间相差2,假如当前数是5,则与前面相差两个2, 因为如果是等 ...

  7. java 正则表达式 中文数字和字母_Java中过滤出字母、数字和中文的正则表达式 | 学步园...

    1.Java中过滤出字母.数字和中文的正则表达式 (1)过滤出字母的正则表达式 [^(A-Za-z)] (2)过滤出数字的正则表达式 [^(0-9)] (3)过滤出中文的正则表达式 [^(\\u4e0 ...

  8. java国际化——Locale+数字格式

    [0]README 1) 本文部分文字描述转自 core java volume 2 , 测试源代码均为原创, 旨在理解 java国际化--Locale+数字格式 的基础知识 : 2) java 编程 ...

  9. java数组个数无限_基于Java代码实现数字在数组中出现次数超过一半

    下文通过几种方法给大家介绍java数组数字出现次数,具体内容如下所示: 方法一: 数组排序,然后中间值肯定是要查找的值. 排序最小的时间复杂度(快速排序)O(NlogN),加上遍历. 方法二: 使用散 ...

最新文章

  1. springmvc3.2+spring+hibernate4全注解方式整合(一)
  2. redis学习笔记---redis的哨兵Sentinel
  3. 博鳌论坛国际粮食安全-林裕豪:从玉农业对话丰收节贸易会
  4. string 字符串中字符无效_7.3 C++字符串类 | 使用string输出
  5. boost::make_reverse_graph用法的测试程序
  6. centos 8 安装使用配置
  7. Machine Learning Mastery 博客文章翻译:深度学习与 Keras
  8. 怎样追求心仪的女孩子
  9. 免费python自学攻略-自学python二三事
  10. 这可能是最简单易懂的机器学习入门(小白必读)
  11. 自动驾驶中的三维目标检测综述
  12. android移植大作游戏,这款steam移植的1GB大作,或许是今年最有氛围的悬疑游戏
  13. 山地车中轴进水表现_解决山地车令人讨厌的中轴异响及其他异响问题
  14. 网站不收录的原因和提高网站收录量的方法
  15. 关于一维数组(小朋友都能明白的一维数组超详细介绍)
  16. Java IO流详解和常用流的使用
  17. WPS格式转换成html代码
  18. 中国智能制造发展趋势!
  19. MySQL添加索引及添加字段并建立索引
  20. 手撕面试官的OKhttp连环炮击~

热门文章

  1. 省地省电就是省钱,高性价比 4U 60盘位GS Gen2发布
  2. 牛客多校第三场A【Clam and fish】贪心
  3. 7.2 客户区鼠标消息
  4. linux 切换一般用户名,linux 切换用户名的方法
  5. JavaScript 瀑布流简单实现(基于Jquery)
  6. docker-compose用法
  7. KANO模型实际操作流程
  8. java javadoc要求_javadoc注释规范
  9. 计算机双目视觉视觉角匹配算法
  10. 水培蔬菜的成本高与普通蔬菜-但优势却是不少