Java中十个常见的违规编码
上一篇 / 下一篇 2012-09-13 09:04:52 / 个人分类:Java
~6[V3F pt0 摘要:作者Veera Sundar在清理代码工作时发现一些常见的违规编码,因此,Veera Sundar把针对常见的一些违规编码总结成一份列表,以便帮助Java爱好者提高代码的质量和可维护性。
fIVx7b7e4b051Testing软件测试网S)wB%c SGN最近,我给Java项目做了一次代码清理工作。经过清理后,我发现一组常见的违规代码(指不规范的代码并不表示代码错误)重复出现在代码中。因此,我把常见的这些违规编码总结成一份列表,分享给大家以帮助Java爱好者提高代码的质量和可维护性。51Testing软件测试网-GvIh:]"E&]Dn }$R
51Testing软件测试网q2bz:f LKH这份列表没有依据任何规则或顺序,所有的这些都是通过代码质量工具包括CheckStyle,FindBugs和PMD检查出。一起来看下:51Testing软件测试网i"?|$@*d-\q:Q2v
51Testing软件测试网'}x(HI6F:S3K3U'P一、Eclipse编译器提供源代码格式输入51Testing软件测试网 | P9_v5v}@
+v N7Y)Ak$i1Ov,zCC0 Eclipse提供自动源码格式选项,并且组织输入(删除未使用的代码)。你可以使用下面的这些快捷键进行操作。51Testing软件测试网ur U'j*N Q5NYp)O
51Testing软件测试网}&w~S^UC kCtrl + Shift + F——源代码格式
2Lf3K6oFE_ |-K%pL7X08N1n _v-S;C3D%s\(U @0 Ctrl + Shift + O——组织输入并删除未使用的代码
.V/d(J+LC-`051Testing软件测试网g-I?QS5@9p代替手动调用这两个函数,只需根据Eclipse自动格式和自动组织选项,可以随时保存文件。51Testing软件测试网-V2Ep3}SL s iA+I
51Testing软件测试网 @"F0VV+Q*wX9?操作步骤,在Eclipse中进入Window -> Preferences -> Java -> Editor -> Save Actions,然后以选定的方式保存,最后检查Format source code + Organize imports。
*p])r0|[R{051Testing软件测试网;L A#y3V9N/_:alo#VX二、避免多个返回(退出点)51Testing软件测试网$O)i`tG0K
d |!k5h'i5g/lr2g)v0 依照你的方法,确保只有一个退出点。不要在同一个地方或多个地方使用返回。比如,下面的代码,NOT RECOMMENDED(不建议),这是因为有多个退出点(返回语句)。
K;g"Hk*@Q0
|
下面的代码有所提升,这是更高版本的。51Testing软件测试网vqmkw
|
O$T9_2vLm;]-W8i[-M0 三、简化if-else
Rk*Y,w9z5Ys0/jJ{#D,Yz|R0 我写了几个实用的方法作为参考,检查语句条件并且基于该条件返回值。比如,考虑到isEligible方法,正如你之前所看到的:51Testing软件测试网~HF:?g^1^)NU Y
|
*{ jN4Ek0 整个方法以一个单一的return语句重新编写:
1X^S1qMR"`/?l0
|
9aW0Yzx"F}0 四、不要给Boolean, Integer或者String创建新的实例
5E*eEdll03`0vO8X9hwmQ9] v0 避免给Boolean,Integer,String创建新的实例。比如,使用new Boolean(true),Boolean,valueOf(true)。修改后的语句与之前的效果基本相同,除了在性能上有所提升。51Testing软件测试网{'{6U,gg(CvQ-q
d"U{vAxIb0 五、使用大括号模块语句
Ae&OgktU0d@A0:t E k;K&CfE&[0 永远别忘了使用大括号模块语句比如if、for、while。这样做的好处是当你在修改模块级语句时减少了模糊代码并且避免引进bug的机会。
UK{UZ @iv09EQ.XU C/s0O:I/n-t0 不建议:
6q"qC b%yI0
|
建议:
CYc!w3xD0
|
KAV V#|:l-xr0 六、以final类型标记方法参数,任何时候都适用51Testing软件测试网Z8qS I{|M!D3C+Q
d3C w.b/O-~$Y0 请记住,以final类型标记方法参数,任何时候都适用。这样做的好处在于当你不小心修改参数值时,编译器会给你警告,同时它还能以更好的方式优化编译器代码字节。
+Olhi0xIv051Testing软件测试网$_)d,UtG$?/Pr建议:51Testing软件测试网+sJ*Cq!CRL
51Testing软件测试网A-Fe o-z&}}0C3u9tGN%^s0private boolean isEligible(final int age){ ... } |
jC-H#wZ I0 七、在UPPERCASE中命名public static final字段
#Rp8d%\3T EYB/OtH0-u7D `p2X1U0 在UPPERCASE中命名public static final字段(通常也被称之为常量)。这个可以让你轻松区分常量字段和局部变量之间的不同。51Testing软件测试网!b^4gYYe
51Testing软件测试网&T'yP%j3J$t7~不建议:
a4l S4dpx0