假设我有两个如下所示的函数:
public static void myFunction1(int a, int b, int c, string d)
{
//dostuff
someoneelsesfunction(c,d);
//dostuff2
}
public static void myFunction2(int a, int b, int c, Stream d)
{
//dostuff
someoneelsesfunction(c,d);
//dostuff2
}
什么是避免重复重复的好方法?
我想到但不喜欢的想法:
- 我可以使 d 成为一个对象并根据类型在运行类型上进行转换,但这让我觉得不太理想;它删除了之前在编译时发生的类型检查。
- 我还可以编写一个私有(private)帮助程序类,它接受一个对象并将两个签名写为公共(public)函数。
- 我可以用委托(delegate)或函数调用或其他东西替换 dostuff 和 dostuff2。
最佳答案
只需将“doStuff”和“doStuff2”重构为单独的方法即可。
他们显然在做与“someoneelsesfunction”方法不同的“事情”,所以无论如何它们应该是单独的方法。理想情况下,每种方法都应该有一项任务。
这甚至是 Visual Studio 中支持的重构 - 只需突出显示“dostuff”中的代码,然后右键单击,然后选择 Refactor->Extract Method。
关于c# - 减少代码重复 : Calling functions with slightly different signatures,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2556509/