如何优化这种代码?

时间:2011-05-14 13:06:08

标签: optimization

今天早些时候,我看到我的一位朋友在Google阅读器上分享了一篇文章(在这个问题的最后,时间太久了。)

我个人认为这段代码是可以接受的。但我想知道如何优化这种代码。

到目前为止,我想到的是建立一个建设者来完成任务。但是,它没有多大帮助,特别是当所有字段都是强制性的时候。

任何见解?

编辑:

通过 optimize ,我的意思是,当其他程序员看到这段代码时,他们不会说WTF。


代码:不要试图理解字段的名称。它们是非英语的首字母。

public CktsQfxxHsh(String hjBh, String fqfZt, String jsfZt, String qcrDm,  
        String qcrXm, String fhrDm, String fhrXm, String qfrDm,  
        String qfrXm, String nsrsbhGf, String nsrxmGf, String nsrsbhXf,  
        String nsrxmXf, String swjgDmJsf, String swjgDmFqf,  
        String swjgJcFqf, String swjgJcJsf, String bfpryDm, String bspryMc,  
        String lxrXm, String lxrDh, String lxrDz, String lxrYb, Date sjSc,  
        Date sjFs, Date sjTjfh, Date sjTjqf, String hjLx, BigDecimal fpfs,  
        BigDecimal jeHj, BigDecimal seHj, BigDecimal jshjHj, String qtqk,  
        BigDecimal tseY, BigDecimal tseZbbl, String fhsm, Date fuhjzrq,  
        Date rqTk, Date sjFuhfs, String dyfhBh, String yqfhBz, String fhBz,  
        String cbBz, Date sjCbhfs) {  
    this.hjBh = hjBh;  
    this.fqfZt = fqfZt;  
    this.jsfZt = jsfZt;  
    this.qcrDm = qcrDm;  
    this.qcrXm = qcrXm;  
    this.fhrDm = fhrDm;  
    this.fhrXm = fhrXm;  
    this.qfrDm = qfrDm;  
    this.qfrXm = qfrXm;  
    this.nsrsbhGf = nsrsbhGf;  
    this.nsrxmGf = nsrxmGf;  
    this.nsrsbhXf = nsrsbhXf;  
    this.nsrxmXf = nsrxmXf;  
    this.swjgDmJsf = swjgDmJsf;  
    this.swjgDmFqf = swjgDmFqf;  
    this.swjgJcFqf = swjgJcFqf;  
    this.swjgJcJsf = swjgJcJsf;  
    this.bfpryDm = bfpryDm;  
    this.bspryMc = bspryMc;  
    this.lxrXm = lxrXm;  
    this.lxrDh = lxrDh;  
    this.lxrDz = lxrDz;  
    this.lxrYb = lxrYb;  
    this.sjSc = sjSc;  
    this.sjFs = sjFs;  
    this.sjTjfh = sjTjfh;  
    this.sjTjqf = sjTjqf;  
    this.hjLx = hjLx;  
    this.fpfs = fpfs;  
    this.jeHj = jeHj;  
    this.seHj = seHj;  
    this.jshjHj = jshjHj;  
    this.qtqk = qtqk;  
    this.tseY = tseY;  
    this.tseZbbl = tseZbbl;  
    this.fhsm = fhsm;  
    this.fuhjzrq = fuhjzrq;  
    this.sjFuhfs = sjFuhfs;  
    this.dyfhBh = dyfhBh;  
    this.yqfhBz = yqfhBz;  
    this.fhBz = fhBz;  
    this.cbBz = cbBz;  
    this.sjCbhfs = sjCbhfs;  
}

3 个答案:

答案 0 :(得分:4)

忽略变量名称(我认为你要求的)唯一的另一个问题是它们太多了。这个构造函数的调用者(我假设Java)是否真的将所有这些值作为离散变量存在,或者它们的组是否构成子对象?看起来你的变量名称有一个系统的结构。可以通过在对象模型中反映该结构而不是依赖于命名约定来改进代码。

答案 1 :(得分:1)

如果任何参数通常来自可以将值组合在一起的对象,或者可以合理地组合到将值组合在一起的对象中,则可以通过传递这些对象而不是传递单个值来缩短代码。但我认为只有当其他对象已经存在或者在其他地方也可以更好地使用时,这只会减少编码。

答案 2 :(得分:1)

我怀疑你使用的是Java语言。在这种情况下,如果CktsQfxxHsh()是构造函数,而参数是标记为final的字段的名称,那么您可以使用Lombok自动生成构造函数:

import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
public class CktsQfxxHsh {
    final String hjBh;
    final String fqfZt;
    ...
}