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);
}
正文完
 0
admin
版权声明:本站原创文章,由 admin 2016-03-20发表,共计2507字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处:https://www.mlzj.net。