java质量重构-坏味道优化

本文探讨了代码优化的重要原则,包括避免字符串文字重复以简化重构,控制方法的认知复杂度以提升维护性,合理使用`String.replace`而非`String.replaceAll`以优化性能,确保switch-case语句以`break`结束以防止意外行为,以及利用Java 7的try-with-resources语句确保资源有效管理。通过这些实践,可以写出更清晰、更高效的代码。
摘要由CSDN通过智能技术生成

1、字符串文字不应重复

        重复的字符串文字使重构过程容易出错,因为您必须确保更新所有出现的内容。另一方面,常量可以从很多地方引用,但只需要在一个地方更新。

案例:

        

2、方法的认知复杂度不能太高

        认知复杂度是衡量方法的控制流的难易程度的度量。具有高认知复杂性的方法将难以维护。

认知复杂度计算方式:

        (1&&||    条件判断符号 +1  

        (2ifelse ifelseswitch    分支语句+1   

        (3)forwhiledo while    循环语句+1   

        (4catch    捕获异常语句+1   

        (5breakcontinue    中断语句+1   

        (6)如果ifforwhiledo whilecatch存在嵌套时,里层的语句相对于外层+1

优化思路:

1.减少ifforwhiledo whilecatch关键字嵌套,可以把深层次的代码抽象成方法。

2.如果大量相似的if-else语句可以考虑用switch代替

3.没啥规律就看见iffor等关键字提成方法

3、“String#replace应该优先于“String#replaceAll

        String.replaceAll的底层实现在每次调用java.util.regex.Pattern.compile()方法时都会调用该方法,即使第一个参数不是正则表达式。这会带来巨大的性能成本,因此应谨慎使用。

案例:

优化:

 使用replace替换replaceAll

4、切换案例应该以无条件的“break”语句结束

        当执行没有在 switch case 结束时显式终止时,它会继续执行后面 case 的语句。虽然这有时是故意的,但通常是导致意外行为的错误。

案例:

优化:

每个case结束添加break终止

5、推荐使用 Try-with-resources

         Java 7 引入了 try-with-resources 语句,它保证相关资源将被关闭。由于新的语法更接近防弹,它应该优先于旧的try/ catch/finally版本。

案例:

        

 优化: 

6、“indexOf检查不应该用于正数

        大多数针对indexOf值的检查将其与 -1 进行比较,因为 0 是有效索引。任何查找值 >0 的检查都会忽略第一个元素,这可能是一个错误。如果意图只是检查字符串或列表中包含的值,请考虑改用该contains方法。

案例:

优化: 

if(getDataType.indexOf("#")>=0){
...
}

或:

if(getDataType.contains ("#")){
...
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值