Java学习之道:Java中十个常见的违规编码
近期,我给Java项目做了一次代码清理工作。经过清理后,我发现一组常见的违规代码(指不规范的代码并不表示代码错误)反复出如今代码中。因此,我把常见的这些违规编码总结成一份列表,分享给大家以帮助Java爱好者提高代码的质量和可维护性。
这份列表没有根据不论什么规则或顺序,全部的这些都是通过代码质量工具包含CheckStyle,FindBugs和PMD检查出。一起来看下:
一、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的机会。
不建议:
- if(age > 18)
- result = true;
- else
- result = false;
建议:
- if(age > 18){
- result = true;
- }else{
- result = false;
- }
六、以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){
- // eligible to vote.
- }
- }
合并成单一的if语句:
- if(age > 18 && !voted){
- // eligible to vote
- }
九、Switch应该有default
始终给Switch语句加入default。
十、使用常量来避免反复定义同样的字符串值
假设你在多个地方必须使用字符串,那么使用常量来避免反复定义拥有同样值的字符串。
比方,看以下的代码:
- private void someMethod(){
- logger.log("My Application" + e);
- ....
- ....
- logger.log("My Application" + f);
- }
string literal“我的应用”能够作为常量而且能在代码中使用。
- public static final String MY_APP = "My Application";
- private void someMethod(){
- logger.log(MY_APP + e);
- ....
- ....
- logger.log(MY_APP + f);
- }
Java学习之道:Java中十个常见的违规编码的更多相关文章
- Java中十个常见的违规编码
摘要:作者Veera Sundar在清理代码工作时发现一些常见的违规编码,因此,Veera Sundar把针对常见的一些违规编码总结成一份列表,以便帮助Java爱好者提高代码的质量和可维护性. 最近, ...
- Java学习之道:Java 导出EXCEL
1.Apache POI简单介绍 Apache POI是Apache软件基金会的开放源代码函式库.POI提供API给Java程式对Microsoft Office格式档案读和写的功能. .NET的开 ...
- Java学习之道:Java项目打包发布
Java项目打包发布 如果只想发布为一个可执行的jar包,使用eclipse的Export功能就可以了 使用eclipse的Export功能,将项目中的所有package打包为一个pet.jar文件, ...
- Java基础语法(8)-数组中的常见排序算法
title: Java基础语法(8)-数组中的常见排序算法 blog: CSDN data: Java学习路线及视频 1.基本概念 排序: 是计算机程序设计中的一项重要操作,其功能是指一个数据元素集合 ...
- Java学习-040-级联删除目录中的文件、目录
之前在写应用模块,进行单元测试编码的时候,居然脑洞大开居然创建了一个 N 层的目录,到后来删除测试结果目录的时候,才发现删除不了了,提示目录过长无法删除.网上找了一些方法,也找了一些粉碎机,都没能达到 ...
- 摘自:java夜未眠之java学习之道
目前Java可以说是产业界和学术界最热门的语言,许多读者都很急切想把Java学好.除非是武侠小说中的运功传送内力的方式,否则花上一段时间苦学是免不了的.花时间,不打紧,就是怕方法错误,事倍功半.我认为 ...
- Java学习之道:空指针错误求解救????????????
运行下面这个主方法红色代码的地方就报如下错: https://api.weibo.com/2/users/show.json?access_token=2.00szM9cCc4R_EC6ebcf150 ...
- Java 学习笔记(4)——java 常见类
上次提前说了java中的面向对象,主要是为了使用这些常见类做打算,毕竟Java中一切都是对象,要使用一些系统提供的功能必须得通过类对象调用方法.其实Java相比于C来说强大的另一个原因是Java中提供 ...
- Java学习之道:jdk环境变量配置方法
JDK(Java Development Kit)是整个Java的核心,包含了Java执行环境.Java工具和Java基础类库.JDK作为JAVA开发的环境,无论是做JAVA开发还是做安卓开发,都必须 ...
随机推荐
- git clone cm source & cm vs android version
$ git clone https://github.com/CyanogenMod/android_packages_apps_DeskClock.git -b cm-9.0.0 CM4代表(And ...
- 50个Android开发技巧(11 为文字加入特效)
问题:怎样构建一个模拟LED数字时钟的页面?效果例如以下图所看到的: (原文地址:http://blog.csdn.net/vector_yi/article/details/24460227) 分析 ...
- 来自中油瑞飞的SQL笔试题20131202
1.有三张表,用户表,用户角色表,角色表, 使用sql显示如下内容: 用户ID,用户名,超级管理员,录入员,会计 也就是角色用逗号分隔. 解: 1.填充数据到表User select * from [ ...
- MFC 在对话框显示图片的多种方法(四种方法)
我们先从简单的开始吧.先分一个类: (一) 非动态显示图片(即图片先通过资源管理器载入,有一个固定ID) (二) 动态载入图片(即只需要在程序中指定图片的路径即可载入) 为方便说明,我们已经建好一个基 ...
- UVA 10718 Bit Mask 贪心+位运算
题意:给出一个数N,下限L上限U,在[L,U]里面找一个整数,使得N|M最大,且让M最小. 很明显用贪心,用位运算搞了半天,样例过了后还是WA,没考虑清楚... 然后网上翻到了一个人家位运算一句话解决 ...
- Apache 服务器
1.介绍 Apache原来用于小型或试验性Internet网络,后来逐步扩展到各种系统中,对Linux的支持几乎完美.Apache可以支持SSL技术,支持多台虚拟主机.Apache是以进程为基础的结构 ...
- pygame编写贪吃蛇
一直想用pygame做一个小游戏的,可是因为拖延症的缘故一直没有动,结果那天看到了一个12岁的国际友人小盆友用pygame做的一款塔防游戏,突然感觉已经落后超级远了,所以心血来潮做小游戏了.高中陪伴我 ...
- 树后台数据存储(採用webmethod)
树后台数据存储 关于后台数据存储将集中在此篇解说 /* *作者:方浩然 *日期:2015-05-26 *版本号:1.0 */ using System; using System.Collection ...
- 一次完整的HTTP请求所经历的7个步骤(前三步是浏览器工作,后四步是服务器工作)
HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: 1. 建立TCP连接在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连 ...
- 获取合并单元格中值的一个方法POI
private static String getCellValueForMerginRegion(Cell cell) { int rowIdx=cell.getRowIndex(); Sheet ...