Java的代码质量优化简单介绍
一:写在前面
软件质量有代码质量和文档质量来共同保证的.开发人员更应该在写完程序的时候,来化时间来优化自己的代码,达到更佳的效果.
二:代码优化的具体介绍如下---->
1.1避免使用空块:
具体包括如下的几点;多余的分号(if条件的后面);没有任何作用的大括号;try-catch-finally语句中的finally为空的时候,如果finally语句中不做任何的处理就不要使用finally语句的.
1.2避免使用空类:
如果一个类没有任何的使用价值就建议删除吧.
1.3:去除多余的import的包导入
如果导入的包没有用到就建议删除吧,导包的时候建议不要使用import x.*的方式,使用哪个就导入哪个吧.
1.4:剪切无效的代码
如果程序中定义的成员变量,参数,方法,类,临时变量没有使用就直接删除吧.
1.5:去除重复的代码
如果多个类里面含有在相同的方法或者是代码片段就去除重复的吧.改用抽取公共的就可以实现的.
1.6:优雅使用switch语句
每个分支都有break的,最后那个default break也不要省略的.放到最后去.
1.7:long型变量的定义注意细节
long型变量紧跟其后的是大写的L,否则会造成严重的可读性差,容易误解的.
1.8:避免一条语句中声明或者是赋值多个变量的.
虽然写在一行比较方便的,少敲代码,但是这样就会降低程序的可读性和可测试的.写开好读,也好发现错误的.
1.9:注意去掉控制标志的临时变量的.
一般在单一的出口下会给程序的结果添加一个控制临时变量的.建议去掉,直接使用return跳出分支语句的.
1.10:避免赋予临时变量的多个角色的
一个临时变量就赋予一个角色的,不要在赋予第二个了,这样就造成可读性查了一些的.赋予临时变量的单一职责的.
1.11:优化在for循环内使用增量因子的
直接在for循环里使用增量因子就比较好,放在里面可能会造成一定的误操作的.
1.12避免使用魔法数字
系统一般会默认0和1是非魔法数字的,其他的数字就不太推荐使用了.优化的策略就是分类讨论了;当不是类型码的时候就考虑使用常量代替的,当是有限个的类型码的时候,就考虑使用枚举代替的,操作简单.当有不定个的类型码的时候,就考虑使用类代替的. 多态代替条件表达式.
1.13: 使用BigDecimal类型进行精确的计算
精确的计算:有加减乘除的.
BigDecimal b1=new BigDecimal(999.00);
BigDecimal b2=new BigDecimal(899.90);
NumberFormat nf=new DecimalFormat("#.##");
System.out.println(nf.format(b1.subtract(b2)));
1.14:避免混用+号的.
1.15:避免使用过时的API的.
1.16:对比较臃肿的方法要记得瘦身的.(合并方法和分解方法的)
1.17:避免创建不必要的对象的.
1.18避免自己的特有工具类被实例化的,可以提供一个对外服务的方法的.防止自己的算法被修改的.
1.19:接口隔离原则的优化.
接口的粒度不要太大了,不要包含太多的方法了.按照方法的功能,分解为子接口的.新接口替代原来的接口的.
去除继承原来臃肿的接口的没有使用的方法.
1.20:以委托代替继承,降低耦合度的.里氏替换原则.就是子类不能覆盖父类非抽象方法.否则会造成偷梁换柱的后果的.就是子类重写方法改变了父类方法的本身的意图的.
具有继承关系的类设计和优化的时候要注意的时:
1:子类可以实现父类的抽象方法的;
2:子类不能覆盖父类的非抽象方法的.
3:子类可以增加自己独特的方法,来体现自己的特点.
1.21:包的优化
用于发布的包下存在重用以及不可重用的类的.保持包的清晰度的.一般继承关系或者是包含的关系的类就要放在不同的包下的.
1.22:继承父类的方法,不可重写父类的静态方法,静态方法的入口是父类的.在Java8直接就在提示错误的.
1.23:合理放置静态块的位置的,静态变量是在类被加载的时候就分配到了数据区的.会赋予变量默认的初始值.申请内存空间和初始化赋值是两个步骤的.
1.24:使用string.equals("String")带来的弊端;
"String".equals(str)会避免NULL的判断的。对比一下就非常的清楚了.
if("Hello".equals(str)) VS if(str!=null&&str.equals("Hello"))
1.25:封装类成员的.(类方法和类变量的)
一个类对外提供服务,就只对外提供一个可以调用的服务方法就可以了,只有自己如何提供的服务的业务方法就要私有化的,通俗的说就是别人家的资源不能随意使用,自己家的资源不随意开放!
1.26:如何正确的将数组转换为集合,不使用如Guava和Apache Commons的工具类
①:List list=new ArrayList<>(Arrays.asList("A","B","C");使用时候注意传递的数组必须是对象数组,而不是基本类型。
②:使用Java8
包装类型:
Integer [] myArray1={1,2,3};
List myList=Arrays.stream(myArray1).collect(Collectors.toList());
基本类型:
int [] myArray1 ={1,2,3};
List myList=Arrays.stream(myArray2).boxed().collect(Collectors.toList());
初步总结了一下,后面还有很多很多的.在不断的补充吧.