“少即是多”,“少”不是空白而是精简,“多”不是拥挤而是完美。删除多余的代码,才能使代码更精简更完美。
11.1.删除已废弃的代码
删除项目中的已废弃的包、类、字段、方法、变量、常量、导入、注解、注释、已注释代码、Maven包导入、MyBatis的SQL语句、属性配置字段等,可以精简项目代码便于维护。
普通:
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Service
public class ProductService {
@Value("discardRate")
private double discardRate;
...
private ProductVO transProductDO(ProductDO productDO) {
ProductVO productVO = new ProductVO();
BeanUtils.copyProperties(productDO, productVO);
// productVO.setPrice(getDiscardPrice(productDO.getPrice()));
return productVO;
}
private BigDecimal getDiscardPrice(BigDecimal originalPrice) {
...
}
}
精简:
@Service
public class ProductService {
...
private ProductVO transProductDO(ProductDO productDO) {
ProductVO productVO = new ProductVO();
BeanUtils.copyProperties(productDO, productVO);
return productVO;
}
}
11.2.删除接口方法的public
对于接口(interface),所有的字段和方法都是 public 的,可以不用显式声明为 public 。
普通:
public interface UserDAO {
public Long countUser(@Param("query") UserQuery query);
public List queryUser(@Param("query") UserQuery query);
}
精简:
public interface UserDAO {
Long countUser(@Param("query") UserQuery query);
List queryUser(@Param("query") UserQuery query);
}
11.3.删除枚举构造方法的 private
对于枚举(menu),构造方法都是 private 的,可以不用显式声明为 private 。
普通:
public enum UserStatus {
DISABLED(0, "禁用"),
ENABLED(1, "启用");
private final Integer value;
private final String desc;
private UserStatus(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
...
}
精简:
public enum UserStatus {
DISABLED(0, "禁用"),
ENABLED(1, "启用");
private final Integer value;
private final String desc;
UserStatus(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
...
}
11.4.删除 final 类方法的 final
对于 final 类,不能被子类继承,所以其方法不会被覆盖,没有必要添加 final 修饰。
普通:
public final Rectangle implements Shape {
...
@Override
public final double getArea() {
return width * height;
}
}
精简:
public final Rectangle implements Shape {
...
@Override
public double getArea() {
return width * height;
}
}
11.5.删除基类 implements 的接口
如果基类已 implements 某接口,子类没有必要再 implements 该接口,只需要直接实现接口方法即可。
普通:
public interface Shape {
...
double getArea();
}
public abstract AbstractShape implements Shape {
...
}
public final Rectangle extends AbstractShape implements Shape {
...
@Override
public double getArea() {
return width * height;
}
}
精简:
...
public final Rectangle extends AbstractShape {
...
@Override
public double getArea() {
return width * height;
}
}
11.6.删除不必要的变量
不必要的变量,只会让代码看起来更繁琐。
普通:
public Boolean existsUser(Long userId) {
Boolean exists = userDAO.exists(userId);
return exists;
}
精简:
public Boolean existsUser(Long userId) {
return userDAO.exists(userId);
}