成都网站建设设计

将想法与焦点和您一起共享

Java开发为什么不允许魔法值出现在代码中

本篇内容介绍了“Java开发为什么不允许魔法值出现在代码中”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

成都网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设公司、微信开发、微信小程序开发、集团成都定制网站等服务项目。核心团队均拥有互联网行业多年经验,服务众多知名企业客户;涵盖的客户类型包括:成都混凝土搅拌罐等众多领域,积累了大量丰富的经验,同时也获得了客户的一致赞扬!

静态常量取代魔法值

像下面这个例子:

if (billCount > 75) {    //todo} else {    //todo}

如果在不了解这块的业务的同事,在读到这块代码的时候,可能会想,75 是什么鬼,为啥和这个数比较,背后深藏着什么秘密吗?可能只有当时的开发人员记得了,导致代码可读性和可维护性极差。

如果声明一个常量,来替换该魔法值,可能就会使代码的可读性和可维护性大大增加。

static final Integer BASIC_BILL_COUNT = 75;

还有些魔法表达式,比如:

if (value > 60 && value <= 80 && type = 1) {    // todo}

比如这个表达式是表示状态为正常且项目活跃,就可以定义:

boolean isActiveProject = value > 60 && value <= 80 && type = 1;

这样是不是可读性就提高了,一眼就可以看出来这块代码的逻辑。

枚举类取代魔法值

还有一种消除魔法值的方式是使用枚举类代替,下面让我们举个例子:

if (eventId == 1) {    System.out.println("睡觉");} else if (eventId == 2) {    System.out.println("吃饭");} else if (eventId == 3) {    System.out.println("打豆豆");}

如上代码是针对事件 id 去执行相应的事件,如果事件比较少,大家还可以勉强记住每个 eventId 对应的含义,但是随着事件 id 的增多,很可能会发生,新来的员工把事件 id 给搞混了,导致执行错误的事件,发生 bug。

那么我们可以使用枚举类来表示相应的事件:

public enum EventEnum {
   /**     * 睡觉     */    SLEEP_EVENT(1, "睡觉"),
   /**     * 吃饭     */    EAT_EVENT(2, "吃饭"),
   /**     * 打豆豆     */    FIGHT_PEA_EVENT(3, "打豆豆");
   private int eventId;    private String desc;
   EventEnum(int eventId, String desc) {        this.eventId = eventId;        this.desc = desc;    }
   public int getEventId() {        return eventId;    }
   public String getDesc() {        return desc;    }}

修改完之后的代码如下:

if (eventId == EventEnum.SLEEP_EVENT.getEventId()) {    System.out.println("睡觉");} else if (eventId == EventEnum.EAT_EVENT.getEventId()) {    System.out.println("吃饭");} else if (eventId == EventEnum.FIGHT_PEA_EVENT.getEventId()) {    System.out.println("打豆豆");}

是不是可读性急剧提升,还不快看看自己代码中有没有这样的魔法值出现,有的话赶紧改造起来。

还有如果你需要在不同的地点引用同一数值,魔法数会让你烦恼不已,因为一旦这些数字发生改变,就必须在程序中找到所有的魔法值,并将它们全部修改一遍,这样就太费时费力了。

其实不只是 Java 不应该在代码中使用魔法值,其他语言亦是如此。

“Java开发为什么不允许魔法值出现在代码中”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


本文名称:Java开发为什么不允许魔法值出现在代码中
网页网址:http://chengdu.cdxwcx.cn/article/gdpeih.html