重构方法,返回已排序的数组

本文关键字:排序 数组 返回 方法 重构 | 更新日期: 2023-09-27 18:27:38

我有两个方法,它们做完全相同的事情-填充arrayOfStrings和arrayOfInts,和具有相同的代码,除了最后一行:

public static string[] GetSortedStrings() 
{
    // (here are several lines of code to fill in those two arrays ...)
    Array.Sort(arrayOfStrings, arrayOfInts);
    return arrayOfStrings;
}

public static int[] GetSortedInts() 
{
    // (here are exactly same lines of code to get those arrays)
    Array.Sort(arrayOfStrings, arrayOfInts);
    return arrayOfInts;
}

问题是,我可以提取这个填充这些数组的公共部分,以便在两种方法中重用吗?

重构方法,返回已排序的数组

可以考虑以下内容:

public static string[] GetSortedStrings() 
{
    var tuple = fillArrays();
    Array.Sort(tuple.Item1, tuple.Item2);
    return tuple.Item1;
}
public static int[] GetSortedInts() 
{
    var tuple = fillArrays();
    Array.Sort(tuple.Item1, tuple.Item2);
    return tuple.Item2;
}
public Tuple<string[],int[]> fillArrays() 
{
    // (here are several lines of code to fill in those two arrays ...)
    return Tuple.Create(strings, ints);
}

这个怎么样:

public static string[] GetSortedStrings() 
{
    doSomething(ref arrayOfStrings, ref arrOfInts);
    return arrayOfStrings;
}

public static int[] GetSortedInts() 
{
    doSomething(ref arrayOfStrings, ref arrOfInts);
    return arrayOfInts;
}
public static void doSomething(ref string[] arrayOfString, ref int[] arrayOfInt) {
    // do your common stuff here
}

在Visual Studio中,您可以右键单击一段代码并重构它(refactor-->Extract Method)