Hi!欢迎光临陕西省的权威思科、华为、Oracle、红帽、深信服、微软认证培训中心!

| 029-88235527
您现在所在位置:首页 > 新闻资讯 > 行业新闻 >

java 代码精简之利用删除代码

发布日期:2020-05-13 14:37:58点击次数:

分享到:
java 代码精简之利用删除代码

“少即是多”,“少”不是空白而是精简,“多”不是拥挤而是完美。删除多余的代码,才能使代码更精简更完美。
 
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<UserDO> queryUser(@Param("query") UserQuery query);
}
精简:
public interface UserDAO {
    Long countUser(@Param("query") UserQuery query);
    List<UserDO> 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);
}