重构方法,返回已排序的数组
本文关键字:排序 数组 返回 方法 重构 | 更新日期: 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)