近期,我给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(不建议),这是由于有多个退出点(返回语句)。

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

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

  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;
  9. }

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

整个方法以一个单一的return语句又一次编写:

  1. private boolean isEligible(int age){
  2. return age > 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. 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. }
  5. }

合并成单一的if语句:

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

九、Switch应该有default

始终给Switch语句加入default。

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

假设你在多个地方必须使用字符串,那么使用常量来避免反复定义拥有同样值的字符串。

比方,看以下的代码:

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

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

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

转载于:https://www.cnblogs.com/blfshiye/p/4345180.html

Java学习之道:Java中十个常见的违规编码相关推荐

  1. Java学习笔记1:Java中有关print、println、printf的用法和区别

    Java学习笔记1:Java中有关print.println.printf的用法和区别 最近在学习java,写一些笔记记录下. 1.print()函数是一般的标准输出,但是不换行. 2.println ...

  2. bytes数组转string指定编码_好程序员Java学习路线分享Java基础之string

    好程序员Java学习路线分享Java基础之string 好程序员Java培训 先来讲一下字符串 字串符分类: 不可变字符串:----String.字符串本身不能发生改变,与指向字符串的引用无关. St ...

  3. Java学习系列(十)Java面向对象之I/O流(上)

    IO流 我们知道应用程序运行时数据是保存在内存中的,但由于内存中的数据不可持久保存(如断电或程序退出时数据会丢失),因此需要一种手段将数据写入硬盘或读入内存.面向IO流编程就是一种很好的选择.IO:I ...

  4. JAVA学习脚印3: java语言控制流程

    JAVA学习脚印3: java语言控制流程 本节首先介绍,java语言中的字符串处理以及输入输出控制,最后介绍控制流程. 在讲述控制流程之前,先介绍以下java中字符串和输入输出的内容,以便后续练习编 ...

  5. e2200网卡驱动 linux,Linux驱动修炼之道-驱动中一些常见的宏

    Linux驱动修炼之道-驱动中一些常见的宏 努力成为linux kernel hacker的人李万鹏原创作品,为梦而战.转载请标明出处 http://doc.xuehai.net/woshixinga ...

  6. Java学习07:Java面向对象

    Java学习07: Java面向对象: 链接:https://pan.baidu.com/s/1gzlBk5OOVI6oEv-WOkHuhQ  提取码:iqov

  7. Java 学习笔记(4)——java 常见类

    上次提前说了java中的面向对象,主要是为了使用这些常见类做打算,毕竟Java中一切都是对象,要使用一些系统提供的功能必须得通过类对象调用方法.其实Java相比于C来说强大的另一个原因是Java中提供 ...

  8. java 项目 预警_java开发中的常见代码黄线预警

    java日常开发中,经常会碰到开发工具idea.Eclipse等在一些代码中报黄线,这对于很多具有强迫症的同学来说,也是一件很头疼的事,尤其是编码不注意规范的同学来说. 下面我就列举一些常见的黄线预警 ...

  9. Java学习之道:空指针错误求解救????????????

    运行下面这个主方法红色代码的地方就报如下错: https://api.weibo.com/2/users/show.json?access_token=2.00szM9cCc4R_EC6ebcf150 ...

最新文章

  1. 复旦大学计算机专业直博,上海复旦大学计算机科学技术学院2016博士招生选拔办法...
  2. 书评 | 产品的事可以简化为两件,产品团队有两种...
  3. python【力扣LeetCode算法题库】836- 矩形重叠
  4. 独立式键盘的编程方法 按键的去抖动原理和基本方法
  5. java怎么从一个类传值到另一个类_Android开发之两个类之间的数据传递
  6. android 调整cpu频率,[IMX6DL][Android4.4] CPU频率调节模式以及降频方法
  7. systemctl自定义service
  8. Ipimage 转mat
  9. wap建站程序源码_角点科技:企业搭建网站选择建站公司需要注意什么?
  10. 在centos 7上自动安装starUML,且破解之。
  11. [CF364D]Ghd
  12. virtualbox突然打不开虚拟机解决方法
  13. 在线检测本机ip的网站
  14. IJCAI-18 阿里妈妈搜索广告算法大赛亚军解决方案
  15. 为什么要在油气行业中应用 IoT?这 8 个应用场景告诉你 IoT 在油气行业中可以做什么...
  16. Python读写文件(txt, csv等)小结
  17. 计算机图形学:二维图形的几何变换(算法原理及代码实现)
  18. 深度学习入门笔记(十五):深度学习框架(TensorFlow和Pytorch之争)
  19. 开课吧WEB全栈架构师【6期,9-12期】
  20. C#编程_网卡信息检测与网络流量检测

热门文章

  1. 前向声明 智能指针_C++ 指针类中实现 -gt;*
  2. UML类图(类关系的表示)
  3. bzoj 3407: [Usaco2009 Oct]Bessie's Weight Problem 贝茜的体重问题(DP)
  4. SpringBoot--自动装配之Import注解以及源码分析
  5. C++ STL list 学习一
  6. python命令行解析库——argparse库的使用
  7. matlab2c使用c++实现matlab函数系列教程-rank函数
  8. 图像处理五:python读取图片的几种方式
  9. Asp.Net 学习资源列表 [转]
  10. oracle 创建用户且只有查看权限