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

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

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

官方一群:

官方二群:

重构之替换算法(Substitute Algorithm)

[复制链接]
查看2403 | 回复2 | 2019-3-5 23:25:20 | 显示全部楼层 |阅读模式

       完美,是用来追求的,不然怎么叫追求完美呢
       人生,我们希望是完美的;工作,我们希望是完美的;另一半,我们也希望是完美的;可以说完美的东西谁都喜欢,世上是否真的会存在完美的东西我不知道,但我们可以不断的去追求完美,不断的让自己希望的事物接近完美。我们平时编写代码也一样,谁不希望自己写的代码是最好的、最完美的呢?可扩展性好、可读性高的代码会让人赏心悦目。
      怎样才能让自己的写的代码越来越好呢?怎样才能让别人看到我们的代码会觉的赏心悦目呢?
      我们只有不断的优化我们的代码,不断的让我们的代码可读性提高,这样才可能让我们写出好的代码,才会赏心悦目。今天跟大家讲的这种重构手法,就是让我们不断的不断的去完善我们的代码,让我们的代码更接近于完美。
     替换算法(Substitute Algorithm),从字面上我们就能理解,就是替换原有的算法。我们先来看两段代码
[C#] 纯文本查看 复制代码
 
public string foundPerson(string [] people)
        {
            for (int i = 0; i < people.Length; i++)
            {
                if (people[i].Equals("Don"))
                {
                    return "Don";
                }
                if (people[i].Equals("John"))
                {
                    return "John";
                }
                if (people[i].Equals("Kent"))
                {
                    return "Kent";
                }
            }
            return "";
        }

[C#] 纯文本查看 复制代码
 public string foundPerson(string[] people)
        {
            string[] sArrty = new string[] { "Don", "John", "Kent" };
            for (int i = 0; i < people.Length; i++)
            {
                if (sArrty.Contains(people[i]))
                    return people[i];
            }
            return "";
        }
上面两段代码功能是一样的,处理的逻辑也是一样的,但如果让你选你会选择哪一段呢?我会毫不犹豫的选择第二段,第二段不但看起来更简洁,而且可扩展性也比第一段好。这就是替换算法的妙处,我们可以把一个可扩展性低,可读性差的代码给替换掉;前提是你想到了更好的实现方式,更好的处理方法,更简洁明了的逻辑,你都可以把原来的函数给替换掉。不过,有一点大家要注意,你在使用此重构手法之前,请先确定自己已经尽可能的分解了原函数。替换一个巨大而复杂的算法是非常困难的,我们只有先将其分解为较简单的函数,然后才能更有把握的进行替换工作。

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

ibcadmin | 2019-3-6 22:22:31 | 显示全部楼层
+1
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则