文档章节

java编码优化10技巧

月生无界
 月生无界
发布于 2016/07/25 11:28
字数 1106
阅读 53
收藏 0

最近,我给Java项目做了一次代码清理工作。经过清理后,我发现一组常见的违规代码(指不规范的代码并不表示代码错误)重复出现在代码中。因此,我把常见的这些违规编码总结成一份列表,分享给大家以帮助Java爱好者提高代码的质量和可维护性。

这份列表没有依据任何规则或顺序,所有的这些都是通过代码质量工具包括CheckStyleFindBugsPMD检查出。一起来看下:

一、Eclipse编译器提供源代码格式输入

Eclipse提供自动源码格式选项,并且组织输入(删除未使用的代码)。你可以使用下面的这些快捷键进行操作。

Ctrl + Shift + F——源代码格式

Ctrl + Shift + O——组织输入并删除未使用的代码

代替手动调用这两个函数,只需根据Eclipse自动格式和自动组织选项,可以随时保存文件。

操作步骤,在Eclipse中进入Window -> Preferences -> Java -> Editor -> Save Actions,然后以选定的方式保存,最后检查Format source code + Organize imports。

二、避免多个返回(退出点)

依照你的方法,确保只有一个退出点。不要在同一个地方或多个地方使用返回。比如,下面的代码,NOT RECOMMENDED(不建议),这是因为有多个退出点(返回语句)。

private boolean isEligible(int age) {
    if (age > 18) {
        return true;
    } else {
        return false;
    }
}

下面的代码有所提升,这是更高版本的。

private boolean isEligible(int age) {
    boolean result;
    if (age > 18) {
        result = true;
    } else {
        result = false;
    }
    return result;
}

三、简化if-else

我写了几个实用的方法作为参考,检查语句条件并且基于该条件返回值。比如,考虑到isEligible方法,正如你之前所看到的:

private boolean isEligible(int age) {
    boolean result;
    if (age > 18) {
        result = true;
    } else {
        result = false;
    }
    return result;
}

整个方法以一个单一的return语句重新编写:

private boolean isEligible(int age) {
    return age > 18;
}

四、不要给Boolean, Integer或者String创建新的实例

避免给Boolean,Integer,String创建新的实例。比如,使用new Boolean(true),Boolean,valueOf(true)。修改后的语句与之前的效果基本相同,除了在性能上有所提升。

五、使用大括号模块语句

永远别忘了使用大括号模块语句比如if、for、while。这样做的好处是当你在修改模块级语句时减少了模糊代码并且避免引进bug的机会。

不建议:

boolean result;
if (age > 18) 
    result = true;
 else 
    result = false;

return result;

建议:

boolean result;
if (age > 18) {
    result = true;
} else {
    result = false;
}
return result;

六、以final类型标记方法参数,任何时候都适用

请记住,以final类型标记方法参数,任何时候都适用。这样做的好处在于当你不小心修改参数值时,编译器会给你警告,同时它还能以更好的方式优化编译器代码字节。

建议:

private boolean isEligible(final int age) {...}

七、在UPPERCASE中命名public static final字段

在UPPERCASE中命名public static final字段(通常也被称之为常量)。这个可以让你轻松区分常量字段和局部变量之间的不同。

不建议:

public static final String testAccountNo = "12345678"; 

建议:

public static final String TEST_ACCOUNT_NO = "12345678";

八、组合成单一的if语句

在尽可能多的情况下,把多个if语句组合成单一的if语句,比如下面的代码:

if(age > 18){
   if(voted == false){
       //do
   }
}

合并成单一的if语句:

if(age > 18 && !voted){
   //do
}

九、Switch应该有default

始终给Switch语句添加default。

十、使用常量来避免重复定义相同的字符串值

如果你在多个地方必须使用字符串,那么使用常量来避免重复定义拥有相同值的字符串。

比如,看下面的代码:

private void someMethod(){
    logger.log("My Application" + e);  
    ....  
    ....
    logger.log("My Application" + f);
} 

 

string  “我的应用”可以作为常量并且能在代码中使用。

public static final String MY_APP = "My Application";  

private void someMethod(){  
  logger.log(MY_APP + e);  
  ....  
  ....  
  logger.log(MY_APP + f);  
} 

本文转载自:http://blog.csdn.net/loseinworld/article/details/7977940

月生无界
粉丝 10
博文 29
码字总数 38810
作品 0
广州
后端工程师
私信 提问
[猎头招聘]【互联网JAVA teamleader】(工作地点:广州)

1)【互联网JAVA teamleader】(工作地点:广州) 职责: 1、负责团队日常技术管理以及团队长短目标的规划和方向指引; 2、负责重点项目架构、质量以及进度的把控 岗位要求: 1、本科以上学历...

DROPS
2012/05/25
549
8
使用 Java Native Interface 的最佳实践

Java™ 本机接口(Java Native Interface,JNI)是一个标准的 Java API,它支持将 Java 代码与使用其他编程语言编写的代码相集成。如果您希望利用已有的代码资源,那么可以使用 JNI 作为您工...

红薯
2009/07/28
842
0
避免 Java 应用中 NullPointerException 的技巧和最佳实践

Java应用中抛出空指针异常是解决空指针的最好方式,也是写出能顺利工作的健壮程序的关键。熟话说“预防胜于治疗”,对于这么令人讨厌的空指针异常,这句话也是成立的。值得庆幸的是运用一些防...

大数据之路
2013/11/29
0
1
2018年慕课网视频教程(vue、docker、python、Go语言、java......)

如需下述哪一个课程,加QQ: 3475362830,非免费,几大洋,非诚勿扰! Java并发编程与高并发解决方案 ZooKeeper分布式专题与Dubbo微服务入门 Java大数据实战 Stom构建实时流处理 HBase+Spring...

杰梵
2018/10/08
0
0
Java程序员应该知道的10个Eclipse调试技巧

Eclipse是众多Java程序员实用的开发工具,其中开发技巧也是繁多,但作为优秀的Java程序员,需要掌握最起码的调试技巧。 1 条件断点 2 异常断点 3 监视点 4 评估/检查 5 修改变量值 6 在Main函...

kouxunli1
2014/03/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

前嗅教程:如何获取精准客源,提高销量

经常有人问嗅嗅,我是XX行业的,大数据能帮我做什么? • 可以给我带来客源吗? • 可以提高我的销量吗? • 可以增加我的利润吗? 今天嗅嗅就以生鲜供货为例,为大家讲一讲外卖平台那些事~...

forespider
30分钟前
1
0
浮窗插件

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>移动窗口</title> <style> body { margin: 0; padding: 0; width: 100%; height: 1000px; background: #eee; } /*示......

流年那么伤
34分钟前
2
0
关于 Jenkins master 共享 JENKINS_HOME 目录的实验

本文首发于:Jenkins 中文社区 作者:翟志军 审校:王冬辉,linuxsuren Jenkins master 的高可用是个老大难的问题。和很多人一样,笔者也想过两个 Jenkins master 共享同一个 JENKINS_HOME 的...

Jenkins中文社区
41分钟前
3
0
【重构】Spring Cloud OAuth 无Token调用源码封装

背景 重构-改善既有代码的设计,重构的目的是是软件更容易被理解和修改。 书接上回Spring Security OAuth 微服务内部Token传递的源码解析,本篇主要无token 调用过程中,代码的不断完善及其重...

冷冷gg
47分钟前
49
0
watchOS更新后 Apple Watch 4心电图功能已开始支持欧洲用户

苹果在发布 Apple Watch 4 系列时也发布了 ECG(心电图)功能,但这项功能仅适用于在美版 Apple Watch。对于其他地区的用户来说,访问该功能的唯一途径是在美国购买该设备。不过当 watchOS ...

linuxCool
56分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部