“少即是多”,“少”不是空白而是精简,“多”不是拥挤而是完美。删除多余的代码,才能使代码更精简更完美。
11.1. 删除已废弃的代码
删除项目中的已废弃的包、类、字段、方法、变量、常量、导入、注解、注释、已注释代码、Maven 包导入、MyBatis 的 SQL 语句、属性配置字段等,可以精简项目代码便于维护。
普通:
import lombok.extern.slf4j.Slf4j;
public class ProductService {
"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) {
...
}
}
精简:
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 {
...
public final double getArea() {
return width * height;
}
}
精简:
public final Rectangle implements Shape {
...
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 {
...
public double getArea() {
return width * height;
}
}
精简:
public final Rectangle extends AbstractShape {
...
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);
}
正文完