请选择 进入手机版 | 继续访问电脑版

马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

重构之分解临时变量(Split Temporary Variable)

[复制链接]
查看2444 | 回复3 | 2019-2-27 23:08:12 | 显示全部楼层 |阅读模式
啥也不说先来看看一段代码
重构前
[C#] 纯文本查看 复制代码
public double getDistanceTravelled(int time)
        {
            double result;
            double acc=_primaryForec / _mass;
            int primaryTime = Math.Min(time,_delay);
            result = 0.5 * acc * primaryTime * primaryTime;
            int secondaryTime = time - _delay;
            if (secondaryTime > 0)
            {
                double primaryVel = acc * _delay;
                acc = (_primaryForec + _secondaryFore) / _mass;
                result += primaryVel * secondaryTime + 0.5 * acc * secondaryTime * secondaryTime;
            }
            return result;
        }

重构后
[C#] 纯文本查看 复制代码
public double getDistanceTravelled1(int time)
        {
            double result;
            double primaryAcc = _primaryForec / _mass;
            int primaryTime = Math.Min(time, _delay);
            result = 0.5 * primaryAcc * primaryTime * primaryTime;
            int secondaryTime = time - _delay;
            if (secondaryTime > 0)
            {
                double primaryVel = primaryAcc * _delay;
                double secondaryAcc = (_primaryForec + _secondaryFore) / _mass;
                result += primaryVel * secondaryTime + 0.5 * secondaryAcc * secondaryTime * secondaryTime;
            }
            return result;
        }

这一种重构手法实在没什么好说的,仔细比对下代码就能明白是什么回事;但以下两种临时变量,被多次赋值时不能使用此手法循环变量:会随着循环的每次运行而改变;
结果收集变量:负责将"通过整个函数的运算"而构成的某个值收集起来。


注:重构后的代码并不是最后的重构代码,还需采用别的重构手法进行重构;如有兴趣的小伙伴可以自行试着重构下。

参考文献
重构——改善既有代码的设计   【美】Martin Fowler 著
                                                                         熊节 译


ibcadmin | 2019-2-28 11:19:22 | 显示全部楼层
逍遥哥 笔记本纪念品我给你留着
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则