全局变量、全局方法的滥用与优化

在项目开发中,经常会用到全局变量有单例对象、静态成员变量等,常见方法有静态方法。一般全局变量放在一个Constans类中,常见的静态方法一般会放在各种Util类中。

全局变量

就比如我参与的一个项目中的Constants类的定义方法。

/**
 * @Author gj
 * @Date 2021/6/25
 * @Version 1.0
 */
public interface CommonConstant {

    /**
     * xxx开户状态
     */
    int ICBC_APPR_APPROVE_STATUS0 = 0;
    int ICBC_APPR_APPROVE_STATUS1 = 1;
    int ICBC_APPR_APPROVE_STATUS2 = 2;
    int ICBC_APPR_APPROVE_STATUS3 = 3;
    int ICBC_APPR_APPROVE_STATUS4 = 4;
    int ICBC_APPR_APPROVE_STATUS5 = 5;

    /**
     * xxx审批结果 0:未通过;1:已通过
     */

    int ABC_AUDITSTATUS0 = 0;
    int ABC_AUDITSTATUS1 = 1;

    /**
     * xx所属类型
     */
    int MATERIAL_TYPE0 = 0;
    int MATERIAL_TYPE1 = 1;

    /**
     * 
     * xxx表状态
     */

    int DATA_REVIEW_APPROVE_STATUS0 = 0;
    int DATA_REVIEW_APPROVE_STATUS1 = 1;
    int DATA_REVIEW_APPROVE_STATUS2 = 2;
    int DATA_REVIEW_APPROVE_STATUS3 = 3;
    int DATA_REVIEW_APPROVE_STATUS4 = 4;
    int DATA_REVIEW_APPROVE_STATUS5 = 5;
    int DATA_REVIEW_APPROVE_STATUS6 = 6;
    int DATA_REVIEW_APPROVE_STATUS7 = 7;
    //....很多表、业务的常量字段
}

定义一个这样大且全的Constants就会影响代码的可维护性,开发过程中会在这个类中添加很多常量,那么类就会越来越大,查找某个需要修改的常量也会比较浪费时间。其次还会增加代码的编译时间,当我们在这个类中放入大量的常量,会导致依赖这个类的代码会很多,每次修改Constans类的常量都会导致依赖它的类文件重新编译,从而浪费很多不必要的编译时间。还会影响代码复用性,比如项目中开发的某个类依赖了这个Constants,但是这个类只需要用到一小部分的常量,也就是引入了很多无关的常量到新项目中。

优化:

  1. 将Constans按照业务、功能拆分成多个功能单一的多个类

  1. 哪个类用到了某个常量,就把常量定义到哪个类中

全局方法

项目中会遇到A类与B类同时用到一块相同的业务或功能逻辑的代码,我们肯定不能在两个类中写上两边相同的业务代码,但是利用继承特性可以把相同的属性、代码抽取出来,定义到父类中,这样实现了代码的复用性。但是在业务场景中A类与B类有可能不具备继承关系,为了代码复用性,提取出来一个父类显得生硬,其他同时会出现不晓得代码的含义。这时侯就可以把这段代码提取到Utils的方法中了。定义Util类之前需要考虑是否需要单独定义一个这样的类,能不能定义到其他类中。

优化:

设计Utils类方法时,我们要按照业务功能细分一下,设计多个不同功能职责的Utils,尽量不要设计包含多个业务的静态方法的Utils类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值