重构之复杂方法拆分

来源:互联网 发布:金融网站源码 编辑:程序博客网 时间:2024/05/16 09:25
这是一个树型的分支移动的代码,当选中某一个节点时,这个节点的分支,通过修改树型结构中的节点的依次的顺序, 做向上或者向下的移动。通过使用重构的方法,拆离了复杂、难以理解的方法。这样可以从业务的角度,可以清晰、简单的理解!
/**   * @pro_code  项目编码   * @selectId 选中的节点的ID   * @isUp 移动的方向     *   **/  public void moveUpDown(String pro_code, Long selectId, Long isUp) {     try {          ProjectOrder selectOrder = dataOrderDao.getProjectOrder(pro_code, selectId);          List selectList = dataOrderDao.findBranch(selectOrder);          ProjectOrder targetOrder =             dataOrderDao.findTargetProjectOrder (selectOrder, isUp);          if (targetOrder == null)             throw new BusinessException("不能再移动");          List targetList = dataOrderDao.findBranch(targetOrder);          long selectLen = selectList.size();          long targetLen = targetList.size();          updateOrder(targetList, isUp == 2 ? -selectLen:selectLen);          updateOrder(selectList, isUp == 1 ? -targetLen:targetLen);          dataOrderDao.updateOrder(selectList);          dataOrderDao.updateOrder(targetList);   } catch (Exception e) {       if (e instanceof BusinessException) throw (BusinessException) e;       LOG.error("移动出现错误", e);       throw new BusinessException("移动出现错误");   }   }  


这只是当时写的,现在觉得有一点启发的代码,肯定有不足,希望给予指点。

经过修改和补充之后的代码:
/** * @projectCode  项目编码 * @selectId 选中的节点的ID * @upDown 移动的方向 0:down 1:up **/public void moveBranch(String projectCode, Long selectId, Integer upDown) {  try {       ProjectOrder startOrder = dataOrderDao.getProjectOrder(projectCode, selectId);       List nowBranch = getBranch(startOrder);        ProjectOrder targetOrder = findTargetOrder(startOrder, upDown);       List targetBranch = getBranch(targetOrder);        updateNowBranch(nowBranch, upDown, targetBranch.size());       updateTargetBranch(targetBranch,upDown, nowBranch.size());  } catch (Exception e) {    if (e instanceof BusinessException) throw (BusinessException) e;    LOG.error("移动出现错误", e);    throw new BusinessException("移动出现错误");  }}private void updateNowBranch(List nowBranch, Integer upDown, Long size) {     updateBranchOrder(nowBranch, upDown == 1 ? -size : size);}private void updateTargetBranch(List targetBranch, Integer upDown, Long size) {     updateBranchOrder(targetBranch, upDown == 1 ? size : -size);}private ProjectOrder findTargetOrder(ProjectOrder startOrder, Integer upDown) {     ProjectOrder targetOrder =         dataOrderDao.findTargetProjectOrder (startOrder, upDown);     return targetOrder;}private List getBranch(ProjectOrder startOrder) {       if (startOrder == null)      throw new BusinessException("不能再移动");       List branch = dataOrderDao.findBranch(startOrder);       return branch}private void updateBranchOrder(List branch, long size){        updateOrder(branch, size);        dataOrderDao.updateOrder(branch);}private void updateOrder(List<ProjectOrder> branch, long size) {   for (ProjectOrder each : branch) {       order.setOrder_num(each.getOrder_num() + size);   }}
0 0
原创粉丝点击