工作笔记总结——使用sonar进行代码优化

最近公司使用sonar对项目的代码进行检查,并对发现的问题发送到内网邮箱,sonar可以分配人员角色和权限,结合了SVN,将SVN中的最新代码下载下来检查代码后打成war包后部署到tomcat上并启动tomcat

昨天修改了sonar上的问题,如下

1、方法长度过长

修改:将方法中变量较少的代码块放到一个新的方法,参数很多,大概有6-7个,多是String,我开始认为java中所有对象是引用传参,后来对修改后的方法测试发现对于String来时有点特殊,传到方法中的String的值没有被修改,因为String是final的,引用对它来说也没有用,只要对它进行赋值操作时

问题:如何才能将一个方法长度减短,在有大量参数的情况,上述方法不可行,有没有什么好的解决方式。

2、低效的stringbuffer

StringBuffer sb = new StringBuffer();
String str = "abc";
sb.append(str + "def"); //这样做的话就失去了stringbuffer的意义了
//应该将后面的也用append
sb.append(str).append("def");

如果是在循环中就更要避免这样的情况了

3、使用entrySet

示例代码:

Map<String, String> map = new HashMap<String, String>();
StringBuffer sb = new StringBuffer();
低效:
for(String key : map.keySet()) {
	sb.append(key).append(map.get(key)); 
}
高效:
for(Entry<String,String> entry : map.entrySet()) {
	sb.append(entry.getKey()).append(entry.getValue());
}


4、使用char代替Characters

示例代码:

StringBuffer sb = new StringBuffer();
低效:
sb.append("."); //对于单个字符其实可以不用String,单个字符包括换行符('\n')、回车符('\r')
高效:
sb.append('.'); //使用char替换String,提高内部转换



5、使用private修饰符

将成员属性的修饰符尽可能加上private,提供getter、setter方法


6、多个修饰符的位置不对,不符合JLS

修饰符顺序:

private --> protected --> public --> abstract --> static --> final --> transient --> volatile --> synchronned --> native --> strictfp


7、判断list为空时使用isEmpty,不要使用size与0比较


8、加上final修饰符,避免代码漏洞


9、不适用printStackTrace和system.print,使用log代替

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值