Java中十个常见的违规编码

本文分享了Java开发过程中常见的编码违规行为及改进方案,包括代码格式、逻辑结构优化、变量命名等,帮助开发者提高代码质量和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有意无意的,在开发中经常会忽略一些很简单编码规范,很感谢作者的总结,再次也做一个简单的小记。

转载地址:http://www.youkuaiyun.com/article/2012-09-11/2809829-common-code-violations-in-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. privatebooleanisEligible(intage){
  2. if(age>18){
  3. returntrue;
  4. }else{
  5. returnfalse;
  6. }
  7. }

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


  1. privatebooleanisEligible(intage){
  2. booleanresult;
  3. if(age>18){
  4. result=true;
  5. }else{
  6. result=false;
  7. }
  8. returnresult;
  9. }

三、简化if-else

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


  1. privatebooleanisEligible(intage){
  2. booleanresult;
  3. if(age>18){
  4. result=true;
  5. }else{
  6. result=false;
  7. }
  8. returnresult;
  9. }

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


  1. privatebooleanisEligible(intage){
  2. returnage>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. privatebooleanisEligible(finalintage){...}

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

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

不建议:


  1. publicstaticfinalStringtestAccountNo="12345678";

建议:


  1. publicstaticfinalStringTEST_ACCOUNT_NO="12345678";,

八、组合成单一的if语句

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


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

合并成单一的if语句:


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

九、Switch应该有default

始终给Switch语句添加default。

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

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

比如,看下面的代码:


  1. privatevoidsomeMethod(){
  2. logger.log("MyApplication"+e);
  3. ....
  4. ....
  5. logger.log("MyApplication"+f);
  6. }

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


  1. publicstaticfinalStringMY_APP="MyApplication";
  2. privatevoidsomeMethod(){
  3. logger.log(MY_APP+e);
  4. ....
  5. ....
  6. logger.log(MY_APP+f);
  7. }

英文出自:veerasundar


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值