还能这样?

2023-01-12 18:24:49 浏览数 (2)

中文编码low吗?

编码规范大家读了不止一遍了,各种规范插件也层出不穷,但是中文编码low吗?如果你把变量方法名定义为中文那没什么好说的,甚至是拼音都很low,但是如果是枚举的话,那我觉得还挺棒的。

面对多流程节点编码,如果使用英文大写不能直观的一眼看出这是哪个节点,第一是英文喜好问题,同一个语义每个人对单词的喜好程度不一样,第二是大写可读性问题,全文大写降低了可读性,但如果是中文枚举则大大不一样,当然,只限枚举。

代码语言:javascript复制
   Component.add(Enum.不含税xxx.code);
    Component.add(Enum.发票xxx.code);
    Component.add(Enum.发票xxx.code);
    Component.add(Enum.xxx.code);
    Component.add(Enum.产品xxx.code);
    Component.add(Enum.员工自付报xxx.code);
    Component.add(Enum.票面xxx.code);
    Component.add(Enum.民航发展xxx.code);
    Component.add(Enum.燃油附xxx.code);
    Component.add(Enum.退xxx.code);
    Component.add(Enum.所在xxx.code);
    Component.add(Enum.是否退xxx.code);
    Component.add(Enum.自付xxx.code);
    Component.add(Enum.开票xxx.code);
    Component.add(Enum.校验码后xxx.code);
    Component.add(Enum.多张图像xxx.code);
    ......
    286行
    
    !OrderSourceEnum.地采用车.desc().equals(signShippedOrderDetailDO.getOrderSource())

面对如此大数量的枚举,如果单凭外层定义,不能直观的一眼选出对应枚举。

属性赋值不了?

字段命名如下

代码语言:javascript复制
@ApiModelProperty("百度经度")
private String bCustomerLongitude;

当使用lombok对前端字段属性赋值会赋值为空

因为lombok无论首字母是否大写都会转换为大写,但命名实际是小写,则转换有问题,需自定义setget

代码如下

代码语言:javascript复制

 @JsonProperty(value = "bCustomerLongitude")
    public String getBCustomerLongitude() {
        return bCustomerLongitude;
    }

这个问题大家可以自行尝试,针对lombok的属性赋值问题。

BigDecimal自带小数位数函数

业务场景中针对签收小数点问题,做了一个校验,如果定义拣货小数位为3,则签收小数位应小于等于3,所有涉及到小数位数判断问题,当时是没有用自定义函数,是直接判断小数点后位数的

代码语言:javascript复制

String str = signQty.stripTrailingZeros().toPlainString();
int  i = 0;
if(str.contains(".")){
  i = str.length() - (str.indexOf(".")   1);
}
if(openStatus != null && openStatus.equals(1) &&(i > precision)){
   throw new TMSException(ErrorCodeEnum.HD50001034, precision);
}

首先判断方式不合理,针对此字段可能为空或下标越界问题,应直接用函数获取,考虑到会有.000或者.210这种情况,应先对该字段进行无效0清除再获取小数位

代码语言:javascript复制

int scale = signQty.scale();

 public static void main(String[] args) {
        BigDecimal b1 = new BigDecimal("2.30");

        BigDecimal b2 = new BigDecimal("2.3");

        System.out.println(b1.scale());
        System.out.println(b2.scale());

    }
控制台输出
2
1

0 人点赞