欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

枚举的错误用法(3/3)

程序员文章站 2023-08-02 21:16:25
继续讲枚举的使用。前文说的是方法参数和pojo属性定义成枚举类型的好处。本文讲在方法里使用枚举的妙处。 ......

▄︻┻┳═一agenda:

▄︻┻┳═一

▄︻┻┳═一

▄︻┻┳═一


 

 

继续讲枚举的使用。前文说的是方法参数和pojo属性定义成枚举类型的好处。本文讲在方法里使用枚举的妙处。

【先上代码】

private boolean riskcheck(refundreqbo refundreq, refundrspbo refundrsp, rpmorddo rpmord, rpmrtuldo rpmrtul, ygbizmessagecontext ctx) throws ygexception {
    logger logger = yglogger.getlogger();
    ... ...

    string bustyp = rrcbustypenum.user_consume_refund_refund.getvalue();
    if(acpayflgenum.no_account_payment.getvalue().equals(rpmord.getacpayflg())){
        bustyp = rrcbustypenum.gway_consume_refund.getvalue();
    }

    realtimeriskcheckreqbo riskreq = new realtimeriskcheckreqbo();
    riskreq.settxcd(refundreq.getgda().gettxcd());
    ... ...
    /** 此处省略15行代码 **/
    ... ...
    riskreq.setbustyp(bustyp);
    ... ...
}

 

代码截图如下,我的14寸的笔记本电脑,一屏显示不全这个变量的定义和使用。

枚举的错误用法(3/3)

 

【重构方式】

在上面的方法体里,把bustyp定义为了string,由于代码行多,在下文看到这个变量后,因为是字符串,所以难免不知道它是会存哪些值。这时呢,我们只好再翻上面的代码查看它的定义和赋了哪些值。

而如果把bustyp定义为rrcbustypenum,那么下文在用到的时候,就能直观的知道它的取值范围,从而提高了可读性。 

重构后的代码为:

private boolean riskcheck(refundreqbo refundreq, refundrspbo refundrsp, rpmorddo rpmord, rpmrtuldo rpmrtul, ygbizmessagecontext ctx) throws ygexception {
    logger logger = yglogger.getlogger();
    ... ...

    rrcbustypenum bustyp = rrcbustypenum.user_consume_refund_refund;
    if(acpayflgenum.no_account_payment.getvalue().equals(rpmord.getacpayflg())){
        bustyp = rrcbustypenum.gway_consume_refund;
    }

    realtimeriskcheckreqbo riskreq = new realtimeriskcheckreqbo();
    riskreq.settxcd(refundreq.getgda().gettxcd());
    ... ...
    /** 此处省略15行代码 **/
    ... ...
    riskreq.setbustyp(bustyp.getvalue());
    ... ...
}