[摘]Java中十个常见的违规编码
摘要:作者Veera Sundar在清理代码工作时发现一些常见的违规编码,因此,Veera Sundar把针对常见的一些违规编码总结成一份列表,以便帮助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(不建议),这是因为有多个退出点(返回语句)。
<!--[if !supportLists]-->1. <!--[endif]-->private boolean isEligible(int age){
<!--[if !supportLists]-->2. <!--[endif]--> if(age > 18){
<!--[if !supportLists]-->3. <!--[endif]--> return true;
<!--[if !supportLists]-->4. <!--[endif]--> }else{
<!--[if !supportLists]-->5. <!--[endif]--> return false;
<!--[if !supportLists]-->6. <!--[endif]--> }
<!--[if !supportLists]-->7. <!--[endif]-->}
下面的代码有所提升,这是更高版本的。
<!--[if !supportLists]-->1. <!--[endif]-->private boolean isEligible(int age){
<!--[if !supportLists]-->2. <!--[endif]--> boolean result;
<!--[if !supportLists]-->3. <!--[endif]--> if(age > 18){
<!--[if !supportLists]-->4. <!--[endif]--> result = true;
<!--[if !supportLists]-->5. <!--[endif]--> }else{
<!--[if !supportLists]-->6. <!--[endif]--> result = false;
<!--[if !supportLists]-->7. <!--[endif]--> }
<!--[if !supportLists]-->8. <!--[endif]--> return result;
<!--[if !supportLists]-->9. <!--[endif]-->}
三、简化if-else
我写了几个实用的方法作为参考,检查语句条件并且基于该条件返回值。比如,考虑到isEligible方法,正如你之前所看到的:
<!--[if !supportLists]-->1. <!--[endif]-->private boolean isEligible(int age){
<!--[if !supportLists]-->2. <!--[endif]--> boolean result;
<!--[if !supportLists]-->3. <!--[endif]--> if(age > 18){
<!--[if !supportLists]-->4. <!--[endif]--> result = true;
<!--[if !supportLists]-->5. <!--[endif]--> }else{
<!--[if !supportLists]-->6. <!--[endif]--> result = false;
<!--[if !supportLists]-->7. <!--[endif]--> }
<!--[if !supportLists]-->8. <!--[endif]--> return result;
<!--[if !supportLists]-->9. <!--[endif]-->}
整个方法以一个单一的return语句重新编写:
<!--[if !supportLists]-->1. <!--[endif]-->private boolean isEligible(int age){
<!--[if !supportLists]-->2. <!--[endif]-->
<!--[if !supportLists]-->3. <!--[endif]-->return age > 18;
<!--[if !supportLists]-->4. <!--[endif]-->
<!--[if !supportLists]-->5. <!--[endif]-->}
四、不要给Boolean, Integer或者String创建新的实例
避免给Boolean,Integer,String创建新的实例。比如,使用new Boolean(true),Boolean,valueOf(true)。修改后的语句与之前的效果基本相同,除了在性能上有所提升。
五、使用大括号模块语句
永远别忘了使用大括号模块语句比如if、for、while。这样做的好处是当你在修改模块级语句时减少了模糊代码并且避免引进bug的机会。
不建议:
<!--[if !supportLists]-->1. <!--[endif]-->if(age > 18)
<!--[if !supportLists]-->2. <!--[endif]--> result = true;
<!--[if !supportLists]-->3. <!--[endif]-->else
<!--[if !supportLists]-->4. <!--[endif]--> result = false;
建议:
<!--[if !supportLists]-->1. <!--[endif]-->if(age > 18){
<!--[if !supportLists]-->2. <!--[endif]--> result = true;
<!--[if !supportLists]-->3. <!--[endif]-->}else{
<!--[if !supportLists]-->4. <!--[endif]--> result = false;
<!--[if !supportLists]-->5. <!--[endif]-->}
六、以final类型标记方法参数,任何时候都适用
请记住,以final类型标记方法参数,任何时候都适用。这样做的好处在于当你不小心修改参数值时,编译器会给你警告,同时它还能以更好的方式优化编译器代码字节。
建议:
<!--[if !supportLists]-->1. <!--[endif]-->private boolean isEligible(final int age){ ... }
七、在UPPERCASE中命名public static
final字段
在UPPERCASE中命名public static final字段(通常也被称之为常量)。这个可以让你轻松区分常量字段和局部变量之间的不同。
不建议:
<!--[if !supportLists]-->1. <!--[endif]-->public static final String testAccountNo = "12345678";
建议:
<!--[if !supportLists]-->1. <!--[endif]-->public static final String TEST_ACCOUNT_NO = "12345678";,
八、组合成单一的if语句
在尽可能多的情况下,把多个if语句组合成单一的if语句,比如下面的代码:
<!--[if !supportLists]-->1. <!--[endif]-->if(age > 18){
<!--[if !supportLists]-->2. <!--[endif]--> if( voted == false){
<!--[if !supportLists]-->3. <!--[endif]--> // eligible to vote.
<!--[if !supportLists]-->4. <!--[endif]--> }
<!--[if !supportLists]-->5. <!--[endif]-->}
合并成单一的if语句:
<!--[if !supportLists]-->1. <!--[endif]-->if(age > 18 && !voted){
<!--[if !supportLists]-->2. <!--[endif]--> // eligible to vote
<!--[if !supportLists]-->3. <!--[endif]-->}
九、Switch应该有default
始终给Switch语句添加default。
十、使用常量来避免重复定义相同的字符串值
如果你在多个地方必须使用字符串,那么使用常量来避免重复定义拥有相同值的字符串。
比如,看下面的代码:
<!--[if !supportLists]-->1. <!--[endif]-->private void someMethod(){
<!--[if !supportLists]-->2. <!--[endif]--> logger.log("My Application" + e);
<!--[if !supportLists]-->3. <!--[endif]--> ....
<!--[if !supportLists]-->4. <!--[endif]--> ....
<!--[if !supportLists]-->5. <!--[endif]--> logger.log("My Application" + f);
<!--[if !supportLists]-->6. <!--[endif]-->}
string literal“我的应用”可以作为常量并且能在代码中使用。
<!--[if !supportLists]-->1. <!--[endif]-->public static final String MY_APP = "My Application";
<!--[if !supportLists]-->2. <!--[endif]-->
<!--[if !supportLists]-->3. <!--[endif]-->private void someMethod(){
<!--[if !supportLists]-->4. <!--[endif]--> logger.log(MY_APP + e);
<!--[if !supportLists]-->5. <!--[endif]--> ....
<!--[if !supportLists]-->6. <!--[endif]--> ....
<!--[if !supportLists]-->7. <!--[endif]--> logger.log(MY_APP + f);
<!--[if !supportLists]-->8. <!--[endif]-->}
分享到:
相关推荐
### JAVA中十个常见的违规编码 #### 一、利用Eclipse自动化工具提高代码整洁度 在开发过程中,保持代码的整洁是非常重要的。Eclipse作为一个广泛使用的IDE(集成开发环境),提供了非常便捷的功能来帮助开发者实现...
在Java编程语言中,敏感词监测是一项重要的功能,特别是在处理用户输入、社交媒体分析、内容过滤等场景中。这个压缩包文件可能包含了一套后端实现敏感词检测的解决方案。下面我们将详细探讨Java如何进行敏感词监测,...
在Java中,实现违禁词识别主要涉及以下几个关键技术: 1. **字符串处理**:Java的String类提供了丰富的字符串操作方法,如indexOf()和contains(),可以用于基本的关键词匹配。但这种方法效率较低,不适用于大量文本...
总的来说,"Java校园论坛的设计与实现"涵盖了软件工程中的多个重要方面,包括需求分析、系统设计、编码实现、测试调试以及后期维护。这个项目对于学习Java编程、Web开发以及团队协作有着很好的实践价值。
在Java后端开发中,发送短信是一项常见的功能,主要用于用户验证、通知服务或者营销活动等。为了实现这个功能,开发者通常会使用特定的第三方库或框架,这些库被称为“短信包”或者“短信SDK”。本篇文章将详细讲解...
在本文中,我们将深入探讨这个系统的几个关键知识点,包括Java编程基础、管理系统设计原则以及宿舍管理的特定需求。 首先,让我们从Java编程语言开始。Java是一种广泛应用于服务器端开发的面向对象的语言,具有“一...
在这个项目中,我们将深入探讨Java编程语言在实现象棋游戏过程中的应用,以及棋局保存机制的关键技术。 首先,Java作为面向对象的编程语言,它的类库丰富,适合开发这种复杂度适中的游戏。在Java版象棋中,我们可能...
Java Swing是Java的一个图形用户界面工具包,它提供了一套组件库和工具,用于创建图形用户界面(GUI),在这个案例中用于创建学生和管理员的登录窗口、查询和管理宿舍信息的界面。Java具有面向对象、平台无关、多...
阿里巴巴Java开发手册(华山版)是一份包含了阿里巴巴集团技术团队多年开发经验和智慧的文档,内容全面覆盖了编程规范、设计规约、工程结构、异常处理、日志记录、安全防护、数据库管理等多个方面。手册旨在指导Java...
在软件开发过程中,静态代码分析是一种重要的质量保证手段,它能够在编码阶段发现潜在的错误、不符合规范的地方或者性能问题,而无需运行程序。violations-lib就是为了解决如何有效管理和理解这些分析结果而诞生的。...
手册中会包含每个检查项的详细描述、配置选项以及如何解决违规的建议。比如,它可能会介绍`TreeWalker`检查器,这是Checkstyle的核心组件,负责遍历抽象语法树并应用规则。 在实际使用中,你可以根据团队的编码规范...
9. **编码语言与数据库**:开发语言使用Java,数据库选用MySQL,这是一套常见的Web开发组合,Java提供后端服务,MySQL存储数据。 10. **时间安排**:从2021年3月19日开始,按照1周到8周的时间节点,逐步完成主题...
【JSP实现BBS论坛】是一项常见的软件工程实践,尤其在毕业设计中,它能帮助学生深入理解Web开发技术,尤其是动态网页制作。本项目基于JSP(Java Server Pages)技术,结合数据库管理系统MySQL,构建了一个功能强大的...
10. **代码规范和标准**:除了安全性,SecureCRS 还可能支持各种编程语言的编码规范,例如 PEP8(Python)、Google Java Style Guide 等,帮助团队保持一致的编码风格。 综上所述,"SecureCRS_33lc" 是一款针对软件...
总结起来,"spring+stuts+hibernate论坛BBS"是一个综合运用了Spring MVC、Struts和Hibernate的Java Web应用,涵盖了用户交互、业务逻辑处理和数据库操作等多个方面,展示了企业级应用开发的常见实践。
房屋信息管理系统是一个基于Java技术开发的应用程序,旨在提供一套完整的房屋租赁和销售信息管理解决方案。该系统分为前台和后台两大部分,分别针对普通用户和管理员的不同需求。 在系统设计上,前台界面主要用于...
【标题】"bbs论坛 jsp"所涉及的知识点主要集中在使用Java Server Pages(JSP)技术构建一个在线讨论平台,即BBS(Bulletin Board System)论坛。BBS论坛是互联网上一种常见的交互式信息交流工具,允许用户发布主题、...