点击上方
“
Java专栏
”,
选择“置顶或者星标”
第一时间阅读精彩文章!
点击这段文字获取:
5个可以写到简历的项目实战视频教程(含源码)
本文来源:
http://r6d.cn/BV2D
1. 业务说明
系统原先已有登录功能,我们打算增加一个登录IP和允许登录时间的安全限制业务。
IP 分为内网ip、外网ip,如果设置了,则该用户只允许在这些ip登录
2. 原有代码贴图
登录代码原先已有,这是增加的功能,该同事增加的代码如下:
图1:login方法中,判断是否可以登录的私有方法调用
图2、3、4该私有业务实现方法。
3 原有代码问题分析
从该方法的调用方式,到该方法的实现,代码都存在不少问题,我先逐一分析,然后再贴上我重构的代码以及重构的思路。
-
调用方式
用String匹配的方式判断,直接用boolean判断即可。
-
-
字符串分割的处理 多个地方存在将字符串(逗号分隔)分割为集合的代码,应该写成工具类,可读性好,并避免重复。
-
三种比较业务缠绕到一起,业务可读性差。这里涉及允许时间判断、内网ip、外网ip三个业务判断,但是代码通过循环缠绕到一起,可读性差,不够聚合,难以修改。
-
多处存在SecureLogEvent的构造(构造安全日志记录),并且没有将关键业务数据传入。
-
-
-
4 重构过程说明
由于重构过程的代码是反复修改,所以已经不好拿回,我先说明一下我的重构过程,然后将重构结果代码贴上,这样读者应该可以基本理解了。