定义多个同名方法时如何防止代码重复?
How do I prevent code duplication when defining multiple methods with the same name?
我最近发现你可以定义多个同名的方法,只要它们的参数不同(我相信这叫做方法重载)。因此,例如,在一个脚本中,我有一个名为 getDate(int date)
的方法和另一个名为 getDate()
的方法。这些方法之间的唯一区别是不接受参数的方法使用 class 中定义的静态整数而不是 date
参数。
我已经在 class 中将此逻辑用于至少 5 种不同的方法,但是像这样复制代码似乎非常混乱。有更优雅的解决方案吗?
只需根据需要调用方法,例如
//To Get the Date normally
DateTime date = getDate();
//Otherwise
date = getDate(1, DateTime.Today);
你打电话给他们应该没有问题。它们应该被 unity 正确重载,因为我用我的编辑器检查过它。
通常,最好有一个函数来完成您要实现的目标,而其他函数调用该函数(或相互调用)以避免重复实际逻辑。
我将使用您的示例:
Date GetDate(int date) {
// -- do whatever you do here
return DoAThing(date);
}
Date GetDate() {
return GetDate(staticVar);
}
这样,如果您想更改获取日期的方式,则不必在多个地方更改代码,并且当您修改 GetDate(int date)
时,调用它的其他函数将很简单效仿。
我最近发现你可以定义多个同名的方法,只要它们的参数不同(我相信这叫做方法重载)。因此,例如,在一个脚本中,我有一个名为 getDate(int date)
的方法和另一个名为 getDate()
的方法。这些方法之间的唯一区别是不接受参数的方法使用 class 中定义的静态整数而不是 date
参数。
我已经在 class 中将此逻辑用于至少 5 种不同的方法,但是像这样复制代码似乎非常混乱。有更优雅的解决方案吗?
只需根据需要调用方法,例如
//To Get the Date normally
DateTime date = getDate();
//Otherwise
date = getDate(1, DateTime.Today);
你打电话给他们应该没有问题。它们应该被 unity 正确重载,因为我用我的编辑器检查过它。
通常,最好有一个函数来完成您要实现的目标,而其他函数调用该函数(或相互调用)以避免重复实际逻辑。
我将使用您的示例:
Date GetDate(int date) {
// -- do whatever you do here
return DoAThing(date);
}
Date GetDate() {
return GetDate(staticVar);
}
这样,如果您想更改获取日期的方式,则不必在多个地方更改代码,并且当您修改 GetDate(int date)
时,调用它的其他函数将很简单效仿。