重构之复杂方法拆分
来源:互联网 发布:金融网站源码 编辑:程序博客网 时间: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
- 重构之复杂方法拆分
- Android复杂页面代码拆分方法
- 重构方法之大型重构
- 重构方法进阶(十三):代码常用重构方法(临时变量内联化&&拆分临时变量)
- 重构之提炼方法
- [架构]复杂App MVC重构小结
- 【重构笔记】重构手法之重新组织方法
- 【重构笔记】重构手法之简化方法调用
- <重构>读书笔记之<提炼方法>
- <重构>读书笔记之<内联化方法>
- 机房重构之模板方法模式
- 重构方法之重新组织函数
- 重构方法之重新组织数据
- 重构方法之简化函数调用
- 重构之简洁的方法名
- 重构设计 -- 通过拆分类隐藏实现
- 交易系统模块划分,模块拆分,重构实战
- 重构组合方法之——提取方法
- shareSDK 分享
- 静与动,天与地
- checkbox的jsTree的一个调用
- 建筑系学生怎么系统地学 Photoshop、CAD 之类软件?
- 我所认识的时间管理与自组织型团队的关系
- 重构之复杂方法拆分
- scala的liftweb 的一个例子的部署
- 根据业务逻辑线做修改
- scala的actor的学习一
- 测试驱动开发 Kent Beck 英文注释版 第一部分 读书杂记
- 通过增加逻辑来修改功能
- MFC中关闭窗口时发生错误的原因
- 通过分析服务器的日志,得到问题的解决方法
- 读书的时间管理的阶段性的总结