定义具有相同名称的多个方法时,如何防止代码重复?

时间:2019-04-23 20:58:15

标签: c# unity3d methods overloading code-duplication

我最近发现,只要它们的参数不同,就可以用相同的名称定义多个方法(我相信这称为方法重载)。因此,例如,在脚本中,我有一个名为getDate(int date)的方法和另一个名为getDate()的方法。这些方法之间的唯一区别是,不接受参数的方法使用的是在类中定义的静态整数,而不是date参数。

我已经在该类中的至少5种不同的方法上使用了此逻辑,但是复制这样的代码似乎很麻烦。有没有更优雅的解决方案?

2 个答案:

答案 0 :(得分:1)

通常,最好拥有一个功能来完成您要实现的目标,而另一个功能(或互相调用)以避免重复实际的逻辑。

我将使用您的示例:

Date GetDate(int date) {
    // -- do whatever you do here
    return DoAThing(date);
}

Date GetDate() {
    return GetDate(staticVar);
}

这样,如果您想更改日期的获取方式,则不必在多个地方更改代码,并且在修改GetDate(int date)时,调用该日期的其他函数将完全照应

答案 1 :(得分:-1)

只需根据需要调用这些方法,例如

//To Get the Date normally
DateTime date = getDate();
//Otherwise
date = getDate(1, DateTime.Today);

调用它们应该没有问题。他们应该团结一致正确地重载,因为我已经用编辑器对其进行了检查。