首页 > 编程语言 >什么是Java中的魔法值?

什么是Java中的魔法值?

时间:2022-09-20 18:00:22浏览次数:64  
标签:Java get 什么 instance static 魔法值 Calendar 代码

使用IDEA时,启用了阿里的代码规范检查,其中就有一项提示是不允许任何魔法值出现在代码里,于是出于好奇就了解一下到底啥时魔法值。

介绍

魔法数值、魔法数字、魔法值,这是一个东西,不同的叫法。
所谓魔法值,是指在代码中直接出现的数值,只有在这个数值记述的那部分代码中才能明确了解其含义。

看一段代码

   /**
     * 获取当前周所有的日期
     *
     * @return
     */
    public static List<String> getRangeDayOfWeek() {
        List<String> list = new ArrayList<>();
        // 日期格式转换
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        // 时间调整到本周一
        Calendar instance = Calendar.getInstance();
        instance.set(instance.get(Calendar.YEAR), instance.get(Calendar.MONDAY), instance.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        instance.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        //循环打印
        for (int i = 1; i <= 7; i++) {
            list.add(sdf.format(instance.getTime()));
            instance.add(Calendar.DAY_OF_WEEK, 1);
        }
        return list;
    }

解决

使用static final 定义常量或使用enum值

static final int WEEK_DAYS= 7;

注:使用static final 声明常量,可以方便以后维护更新。修改变量的值时只用修改一处,还不用担心修改了其他不该修改的常量。

总结

魔法值的问题对于代码逻辑来说,并不是什么要命的事情,即使不修改也基本不影响代码的正常运行,我以前没有安装阿里代码检查规范时,一样这么使用,也没出现过啥问题。好吧,应该说但是了。但是,遵循公认的代码规范,可以有效的避免开发过程的一些小问题(最让人头疼的往往都是一些小问题引起的),提升开发的效率和代码的可阅读性,老老实实按照规范来,自然就会受益良多,继续加油!

标签:Java,get,什么,instance,static,魔法值,Calendar,代码
From: https://www.cnblogs.com/leepandar/p/16711988.html

相关文章

  • 什么是 开发环境、测试环境、生产环境、UAT环境、仿真环境
    开发环境:开发环境是程序猿们专门用于开发的服务器,配置可以比较随意,为了开发调试方便,一般打开全部错误报告。测试环境:一般是克隆一份生产环境的配置,一个程序在测试环境工......
  • java流之装饰者模式
    扩展类在于继承FilterInputStream,从而增强read和writer方法的能力输出流同样如此。   推荐文章:https://blog.csdn.net/hustzw07/article/details/80795855......
  • 全局唯一ID生成器(SnowFlakeId算法JAVA实现)
    importorg.apache.commons.lang3.RandomUtils;importjava.util.Random;/***@Description:全局唯一Id生成器*@Author:yk*@Create:2022-09-2016:55*/p......
  • Java 中 IO 流
    Java中IO流分为几种?按照流的流向分,可以分为输入流和输出流;按照操作单元划分,可以划分为字节流和字符流;按照流的角色划分为节点流和处理流。JavaIo流共涉及40......
  • Java处理Linux软连接文件
    这是几年前写的旧文,此前发布Wordpress小站上,现在又重新整理。算是温故知新,后续会继续整理。如有错误望及时指出,在此感谢。背景:运维同学反馈有一个部署很久的线上业务组......
  • 前端面试题JavaScript篇——2022-09-20
    每日3题1以下代码执行后,控制台中的输出内容为?//index.jsconsole.log(1);import{sum}from"./sum.js";console.log(sum(1,2));//sum.jsconsole.log(2);exp......
  • 什么是跨域问题?如何解决?
    跨域问题指的是不同站点之间,使用ajax无法相互调用的问题。跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。但这个保护机制也......
  • Java线程的join方法
    java线程中的join方法线程的join方法可以用来让本线程插队,强行占用cpu执行权;现有线程A在cpu上运行,另一个线程B调用自己的join方法,强行把正在运行的线程A退回到等待状态,......
  • Java基础之ClassFile文件结构
    本文相关知识均来自:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html.class文件都遵循ClassFile结构:ClassFile{u4magic;u2......
  • 【Java基础】System.out.println() 解析
    1.代码说明System类提供一些有用的属性和方法,包括标准输入输出和错误打印。有一个对象属性out,类型为PrintStream。setOut()方法使用static修饰,类加载时执行。该对象属......