欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

业务代码的管理

程序员文章站 2022-04-15 18:26:33
避免业务代码量带来的臃肿问题项目工程随着时间以及业务需求的扩展,随之带来的问题问题是业务量越来越多,例如常见的html页面可能动辄两三千多行,service类少则一千多行,代码阅读难以理解,维护工作量大,是什么原因造成的?一个良好代码编写习惯真的能避免这种问题。实际过程中的案例请假销假相关的业务,二者既有关联的地方,也有独立的地方,相关的方法完成可能抽离处理。实际过程一般分为两部分:请假业务类:@Servicepublic class LeaveServiceImpl extends BaseS...

避免业务代码量带来的臃肿问题

项目工程随着时间以及业务需求的扩展,随之带来的问题问题是业务量越来越多,例如常见的html页面可能动辄两三千多行,service类少则一千多行,代码阅读难以理解,维护工作量大,是什么原因造成的?一个良好代码编写习惯真的能避免这种问题。

实际过程中的案例

请假销假相关的业务,二者既有关联的地方,也有独立的地方,相关的方法完成可能抽离处理。实际过程一般分为两部分:

请假业务类:

@Service
public class LeaveServiceImpl extends BaseService<Myleave> implements LeaveService {
	
}

销假业务类:

@Service
public class SalesleaveServiceImpl extends BaseService<Salesleave> implements SalesleaveService {
	
}

随着业务需求的增多,这两个类不加以控制,代码量都会充斥在其中,例如这种代码:

private String getShopname(Long deptId) {
        StringBuffer sb = new StringBuffer();
        XgjDeptDto xgjDeptDto = xgjDeptMapper.findDeptInfoByDeptId(deptId);
        if(xgjDeptDto!=null){
            if(StringUtils.isNotBlank(xgjDeptDto.getCompanyName())){
                sb.append(xgjDeptDto.getCompanyName()).append("-");
            }
            if(StringUtils.isNotBlank(xgjDeptDto.getAreaName())){
                sb.append(xgjDeptDto.getAreaName()).append("-");
            }
            if(StringUtils.isNotBlank(xgjDeptDto.getShopName())){
                sb.append(xgjDeptDto.getShopName()).append("-");
            }
            return sb.substring(0,sb.length()-1);
        }
        return null;
}

根据部门id或者名称全缀,只能是给当前类进行使用。这种代码增多会导致业务量臃肿!

解决思路

将臃肿的service进行拆分,拆分为更细的series类。比如service中F需要调用A,B,C三件事才能完成,将ABC非核心service的抽离出来放置到ServiceHandle类中进行处理!

例如销假类的业务请求,新增handle类:

public class SalesleaveServiceHandle {
    private static SalesleaveServiceHandle instance;

    private SalesleaveServiceHandle() {}

    public static SalesleaveServiceHandle getInstance() {
        if(instance == null) {
            instance = new SalesleaveServiceHandle();
        }
        return instance;
    }

    /**
     * 获取小店名称
     * @param xgjDeptMapper
     * @param deptId
     * @return
     */
    protected String getShopname(XgjDeptMapper xgjDeptMapper,Long deptId) {
        StringBuffer sb = new StringBuffer();
        XgjDeptDto xgjDeptDto = xgjDeptMapper.findDeptInfoByDeptId(deptId);
        if(xgjDeptDto!=null){
            if(StringUtils.isNotBlank(xgjDeptDto.getCompanyName())){
                sb.append(xgjDeptDto.getCompanyName()).append("-");
            }
            if(StringUtils.isNotBlank(xgjDeptDto.getAreaName())){
                sb.append(xgjDeptDto.getAreaName()).append("-");
            }
            if(StringUtils.isNotBlank(xgjDeptDto.getShopName())){
                sb.append(xgjDeptDto.getShopName()).append("-");
            }
            return sb.substring(0,sb.length()-1);
        }
        return null;
    }
}

更甚至,若是业务方法通用,很多类使用到则需进一步提取公用方法,名字起好!

本文地址:https://blog.csdn.net/fengchao2016/article/details/110260276

相关标签: 架构管理 java