码迷,mamicode.com
首页 > 其他好文 > 详细

我的重构--重构案例2

时间:2018-03-15 13:21:02      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:重构案例   重构案例2   

二.Ajax访问Controller层的返回

技术分享图片

技术分享图片


问题:1.增加了Controller的长度,controller做了自己本不应该做的事情;2.增加了他人阅读的困难,可能controller层一共5行,构造返回就占了4行

重构:

技术分享图片


将返回结果封装到了Utils中,使用简单工厂+模版模式,链式编程返回结果


工程中将结果的封装放在BaseController层,也有一定的目的和好处



三.登陆重构

 

问题:1.登陆controller层代码4,5篇,controller表示亚历山大2.代码过长看不懂,也没有必要的注释

解决:拆解代码并重构

1>对比验证码 问题:removeAttribute重复  if逻辑判断太长 只使用一次的局部变量  StringUtils使用不彻底


技术分享图片

      重构结果:

技术分享图片

技术分享图片

以上两种都可以:只使用一次的局部变量应该删除,但表示语意的局部变量可以保留(方便理解阅读)


2> 判断登陆操作是否超过限制

技术分享图片

问题:代码目的不明确

技术分享图片

3>统一用户结果的处理


技术分享图片

问题:局部变量的滥用  for if的滥用(逻辑矛盾) 

有必要更新操作吗?(统一用户只会更新密码,而我们shiro可以登陆免密码,密码不需要存储和更新)

重构:抽取方法


技术分享图片

抽取方法替代局部变量

3>实际登陆操作if else的滥用

技术分享图片

一个三元运算符就可以解决的事情,实际登陆(包括shiro的登陆和缓存的存储)可以进行抽取(业务中注册也可以调用)

技术分享图片

4> 登陆供应商的操作(业务是否需要还是个问题,重构的原则不改变代码业务,那就不考虑业务是否需要了)

技术分享图片



技术分享图片


技术分享图片


问题:这些操作不该出现再controller层   供应商为空判断方法中多处出现

双层for循环里面夹着if else需要优化

重构:对其业务不太清楚,重构结果不太


技术分享图片


重构最终代码附上:

技术分享图片








我的重构--重构案例2

标签:重构案例   重构案例2   

原文地址:http://blog.51cto.com/13496382/2087088

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!