问题: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需要优化
重构:对其业务不太清楚,重构结果不太
重构最终代码附上:
原文地址:http://blog.51cto.com/13496382/2087088