近期,我给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(不建议),这是由于有多个退出点(返回语句)。

  1. private boolean isEligible(int age){
  2. if(age > 18){
  3. return true;
  4. }else{
  5. return false;
  6. }
  7. }

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

  1. private boolean isEligible(int age){
  2. boolean result;
  3. if(age > 18){
  4. result = true;
  5. }else{
  6. result = false;
  7. }
  8. return result;
  9. }

三、简化if-else

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

  1. private boolean isEligible(int age){
  2. boolean result;
  3. if(age > 18){
  4. result = true;
  5. }else{
  6. result = false;
  7. }
  8. return result;
  9. }

整个方法以一个单一的return语句又一次编写:

  1. private boolean isEligible(int age){
  2. return age > 18;
  3. }

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

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

五、使用大括号模块语句

永远别忘了使用大括号模块语句比方if、for、while。这样做的优点是当你在改动模块级语句时降低了模糊代码而且避免引进bug的机会。

不建议:

  1. if(age > 18)
  2. result = true;
  3. else
  4. result = false;

建议:

  1. if(age > 18){
  2. result = true;
  3. }else{
  4. result = false;
  5. }

六、以final类型标记方法參数,不论什么时候都适用

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

建议:

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

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

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

不建议:

  1. public static final String testAccountNo = "12345678";

建议:

  1. public static final String TEST_ACCOUNT_NO = "12345678";,

八、组合成单一的if语句

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

  1. if(age > 18){
  2. if( voted == false){
  3. // eligible to vote.
  4. }
  5. }

合并成单一的if语句:

  1. if(age > 18 && !voted){
  2. // eligible to vote
  3. }

九、Switch应该有default

始终给Switch语句加入default。

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

假设你在多个地方必须使用字符串,那么使用常量来避免反复定义拥有同样值的字符串。

比方,看以下的代码:

  1. private void someMethod(){
  2. logger.log("My Application" + e);
  3. ....
  4. ....
  5. logger.log("My Application" + f);
  6. }

string literal“我的应用”能够作为常量而且能在代码中使用。

  1. public static final String MY_APP = "My Application";
  2. private void someMethod(){
  3. logger.log(MY_APP + e);
  4. ....
  5. ....
  6. logger.log(MY_APP + f);
  7. }

Java学习之道:Java中十个常见的违规编码的更多相关文章

  1. Java中十个常见的违规编码

    摘要:作者Veera Sundar在清理代码工作时发现一些常见的违规编码,因此,Veera Sundar把针对常见的一些违规编码总结成一份列表,以便帮助Java爱好者提高代码的质量和可维护性. 最近, ...

  2. Java学习之道:Java 导出EXCEL

    1.Apache POI简单介绍  Apache POI是Apache软件基金会的开放源代码函式库.POI提供API给Java程式对Microsoft Office格式档案读和写的功能. .NET的开 ...

  3. Java学习之道:Java项目打包发布

    Java项目打包发布 如果只想发布为一个可执行的jar包,使用eclipse的Export功能就可以了 使用eclipse的Export功能,将项目中的所有package打包为一个pet.jar文件, ...

  4. Java基础语法(8)-数组中的常见排序算法

    title: Java基础语法(8)-数组中的常见排序算法 blog: CSDN data: Java学习路线及视频 1.基本概念 排序: 是计算机程序设计中的一项重要操作,其功能是指一个数据元素集合 ...

  5. Java学习-040-级联删除目录中的文件、目录

    之前在写应用模块,进行单元测试编码的时候,居然脑洞大开居然创建了一个 N 层的目录,到后来删除测试结果目录的时候,才发现删除不了了,提示目录过长无法删除.网上找了一些方法,也找了一些粉碎机,都没能达到 ...

  6. 摘自:java夜未眠之java学习之道

    目前Java可以说是产业界和学术界最热门的语言,许多读者都很急切想把Java学好.除非是武侠小说中的运功传送内力的方式,否则花上一段时间苦学是免不了的.花时间,不打紧,就是怕方法错误,事倍功半.我认为 ...

  7. Java学习之道:空指针错误求解救????????????

    运行下面这个主方法红色代码的地方就报如下错: https://api.weibo.com/2/users/show.json?access_token=2.00szM9cCc4R_EC6ebcf150 ...

  8. Java 学习笔记(4)——java 常见类

    上次提前说了java中的面向对象,主要是为了使用这些常见类做打算,毕竟Java中一切都是对象,要使用一些系统提供的功能必须得通过类对象调用方法.其实Java相比于C来说强大的另一个原因是Java中提供 ...

  9. Java学习之道:jdk环境变量配置方法

    JDK(Java Development Kit)是整个Java的核心,包含了Java执行环境.Java工具和Java基础类库.JDK作为JAVA开发的环境,无论是做JAVA开发还是做安卓开发,都必须 ...

随机推荐

  1. [置顶] DX报表的开发流程(1)

    DevExpress.XtraReports简称为DX报表. 本文主要介绍下VS2010项目中如何开发DX报表,具体的内容包括: (1)下载安装 (2)报表文件创建 (3)页面文件的创建 (4)页面的 ...

  2. tmux centos 6.3

    tmux-1.6-1.el6.rf.i686.rpm CentOS 6 / RHEL 6 Download #21 tmux-1.6-1.el6.rf.i686.rpm

  3. 软考之路(四)---软件project一 概念模型,逻辑模型,物理模型

    自从接触到数据库到如今这三个概念大家理解的还有些不清楚,今天来为大家解答疑惑,共同提高,结合生活理解 概念模型        概念模型就是在了解了用户的需求,用户的业务领域工作情况以后,经过分析和总结 ...

  4. 杭电 1711 Number Sequence

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  5. hbase memstorelab

    关于MemStore的补充 在通过HStore.add向store中加入�一个kv时,首先把数据写入到memstore中.这一点没有什么说明: publiclongadd(finalKeyValue ...

  6. (WinForm)文件夹状态监控,最小化到托盘,开机自启动

    原文 (WinForm)文件夹状态监控,最小化到托盘,开机自启动 . 文件夾監控(監測文件夾中的文件動態): //MSDN上的例子 public class Watcher { public stat ...

  7. Swift代码实现加载WEBVIEW

    let webview = UIWebView(frame:self.view.bounds) webview.bounds=self.view.bounds //远程网页 webview.loadR ...

  8. PySide——Python图形化界面

    PySide——Python图形化界面 PySide——Python图形化界面入门教程(四) PySide——Python图形化界面入门教程(四) ——创建自己的信号槽 ——Creating Your ...

  9. java entry

    我希望要一个ArrayList<Entry>,类似C++中的pair, 可是Map.Entry是个接口,不能实例化,能够像以下这样写 HashMap<Integer, Integer ...

  10. Python Errors and Exceptions

    1. python中的try{}catch{} 2. raise exception 3. try...except ... else.. 4. finally块 python中的异常处理的keywo ...