Java中11个常见的违规编码

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

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

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

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

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

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

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

 

 
 
  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;  

三、简化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;  

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

 

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

四、使用大括号模块语句

永远别忘了使用大括号模块语句比如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;  

五、以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.   }  

合并成单一的if语句:

 

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

八、Switch应该有default

始终给Switch语句添加default。

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

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

比如,看下面的代码:

 

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

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

 

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

十、直接取得list

 
  1. List list = xxxxx.getList();
  2. //未经判断直接
  3. Person pi = list.get(0);
     

容易造成数组越界异常。

修改 : 先判断非空

 
  1. List list = xxxxx.getList();
  2. //未经判断直接
  3. if(!Collectionutils.isEmpty(list)){
  4. pi = list.get(0);
  5. }

十一、字符串取得子串

 
  1. String orgCode = strUnitCode.substring(0,5);
String orgCode = strUnitCode.substring(0,5);

如果字符串的长度不够, 也会引起异常,

修改为:使用工具类进行子串的截取:即使长度不够, 也会返回空子串

 

  1. String orgCode = org.apache.commons.lang.StringUtils.substring(strUnitCode,0,4)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值