在项目开发中,经常会用到全局变量有单例对象、静态成员变量等,常见方法有静态方法。一般全局变量放在一个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,但是这个类只需要用到一小部分的常量,也就是引入了很多无关的常量到新项目中。
优化:
将Constans按照业务、功能拆分成多个功能单一的多个类
哪个类用到了某个常量,就把常量定义到哪个类中
全局方法
项目中会遇到A类与B类同时用到一块相同的业务或功能逻辑的代码,我们肯定不能在两个类中写上两边相同的业务代码,但是利用继承特性可以把相同的属性、代码抽取出来,定义到父类中,这样实现了代码的复用性。但是在业务场景中A类与B类有可能不具备继承关系,为了代码复用性,提取出来一个父类显得生硬,其他同时会出现不晓得代码的含义。这时侯就可以把这段代码提取到Utils的方法中了。定义Util类之前需要考虑是否需要单独定义一个这样的类,能不能定义到其他类中。
优化:
设计Utils类方法时,我们要按照业务功能细分一下,设计多个不同功能职责的Utils,尽量不要设计包含多个业务的静态方法的Utils类。