剑弑 发表于 2019-3-5 23:25:20

重构之替换算法(Substitute Algorithm)


       完美,是用来追求的,不然怎么叫追求完美呢{:2_27:}。
       人生,我们希望是完美的;工作,我们希望是完美的;另一半,我们也希望是完美的;可以说完美的东西谁都喜欢,世上是否真的会存在完美的东西我不知道,但我们可以不断的去追求完美,不断的让自己希望的事物接近完美。我们平时编写代码也一样,谁不希望自己写的代码是最好的、最完美的呢?可扩展性好、可读性高的代码会让人赏心悦目。
      怎样才能让自己的写的代码越来越好呢?怎样才能让别人看到我们的代码会觉的赏心悦目呢?
      我们只有不断的优化我们的代码,不断的让我们的代码可读性提高,这样才可能让我们写出好的代码,才会赏心悦目。今天跟大家讲的这种重构手法,就是让我们不断的不断的去完善我们的代码,让我们的代码更接近于完美。
   替换算法(Substitute Algorithm),从字面上我们就能理解,就是替换原有的算法。我们先来看两段代码

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

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

ibcadmin 发表于 2019-3-6 22:22:31

+1
页: [1]
查看完整版本: 重构之替换算法(Substitute Algorithm)