几个Java代码瘦身优化的经典案例(不看必定后悔的!!!)

 前言:

      苹果创始人老乔说,”复杂的终极境界是简单“,同样的优雅的代码一定是精简明了,可读性好。老子也说大道至简,可见简洁的代码是多么的重要,不啰嗦,直接干货。

1.使用级联

   优化前5行

     ParamBO paramBO = new ParamBO();

           paramBO.setId(1);

           paramBO.setName(”ifeve“);

           paramBO.setOld(7);

 优化后1行

      new ParamBO().withId(1).withName("ifeve").withOld(7);

总结:直接减掉40斤呀!!!

2.不要返回布尔

  优化前5行

 if ("true".equalsIgnoreCase(value.toString())) {

   invoke = true; }

 else {

  invoke = false;

}

优化后一行

invoke = "true".equalsIgnoreCase(value.toString());

3.去掉else

优化前5行:

if (null != result && StringUtils.isNotBlank(no)) {

  return no;

} else {

  throw new RuntimeException("XX");

}

优化后4行:

if (null != result && StringUtils.isNotBlank(no)) {

return no;

} throw new RuntimeException ("XX");

3.减少不需要的判断

优化前5行:

String requestId = null;

if (null != request.getExtData()) {

      requestId = request.getExtDataValue(REQUEST_ID_KEY);

} return requestId;

优化后1行:

 return request.getExtDataValue(REQUEST_ID_KEY);

4.LIST TO MAP

优化前4行:

   Map AssetsMetaIdMap = Maps.newHashMap();

   for (AssetsInfoBO assetsInfoBO : request.getAssetsCollectionList()) {          AssetsMetaIdMap.put(assetsInfoBO.getAssetMetadataId(), assetsInfoBO.getAssetMetadataId()); }

优化后1行:

Map AssetsMetaIdMap = request.getAssetsCollectionList().stream().collect(Collectors.toMap(Hosting::getAssetMetadataId, Hosting::getAssetMetadataId));

如果key重复会抛出异常:

Exception in thread "main" java.lang.IllegalStateException: Duplicate key 80000

5.字符串累加

字符串只要不在for循环里累加,可以直接用+号,因为编译成字节码后会变成StringBuilder,如果在for循环里面用+号会生成多个StringBuilder,所以在for循环里累加最好在循环外创建StringBuilder。

优化前五行:

 StringBuffer sblog = new StringBuffer();

 sblog.append("waterDriven|sellerId=");

 sblog.append(request.getSellerTaobaoId());

 sblog.append("|result=");

 sblog.append(isSuccess);

优化后一行:

 String sblog="waterDriven|sellerId="+request.getSellerTaobaoId()+"|result="+isSuccess;

以上场景用逗号和等号连接数据,使用GUAVA的Joiner更精简,可读性更好

String sblog=Joiner.on("|").withKeyValueSeparator("=").join(ImmutableMap.of("sellerId", request.getSellerTaobaoId(), "result", isSuccess))

6.默认值使用Optional

优化前五行:

if (null == status) {

   param.put("status", new ArrayList());

} else {

  param.put("status", status);

}

优化后一行,使用JDK8的Optional

Optional.ofNullable(status).orElse(new ArrayList());

如果是字符串可以用:

StringUtils.defaultIfEmpty(status,"")

7.使用LocalDate和LocalDateTime

LocalDate精确到日期,LocalDateTime精确到时分秒。

优化前14行代码:

try { SimpleDateFormat sdfDay = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdfMins = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date now = new Date(); String today = sdfDay.format(now); String waterStart = today + " 03:00:00"; String waterEnd = today + " 04:00:00"; Date waterStartTime = sdfMins.parse(waterStart); Date waterEndTime = sdfMins.parse(waterEnd); } catch (ParseException pe) { return XX; }

优化后3行代码:

LocalDateTime now = LocalDateTime.now(); LocalDateTime waterStart = LocalDateTime.of(now.getYear(), now.getMonth(),now.getDayOfMonth(),3,0); LocalDateTime waterEndTime =LocalDateTime.of(now.getYear(), now.getMonth(),now.getDayOfMonth(),4,0);

终于写完里,困死了但是很实用的,好的编码习惯看起来很清爽呀!优化代码,人人有责!!!从我做起!

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值