前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >还能这样?

还能这样?

作者头像
疯狂的KK
发布2023-01-12 18:24:49
2300
发布2023-01-12 18:24:49
举报
文章被收录于专栏:Java项目实战Java项目实战

中文编码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
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 赵KK日常技术记录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档