Java 更改方法签名的良好实践

Java 更改方法签名的良好实践,java,methods,refactoring,Java,Methods,Refactoring,我有一种情况,我声明一个方法 public String getData(WebDriver driver, int iRowNumber) 我从许多其他测试用例方法调用这个方法。现在我觉得有必要更改参数的数量,并包括第三个参数。显然,它会在所有以前的测试用例方法中抛出错误。我如何处理这种情况?我不想创建另一个具有相同名称和不同参数数(多态性)的方法,因为我还必须在以前的测试方法中使用修改过的方法 有什么方法可以解决这个问题吗?最好的解决方案是创建一个包含三个参数的新方法: public St

我有一种情况,我声明一个方法

public String getData(WebDriver driver, int iRowNumber)
我从许多其他测试用例方法调用这个方法。现在我觉得有必要更改参数的数量,并包括第三个参数。显然,它会在所有以前的测试用例方法中抛出错误。我如何处理这种情况?我不想创建另一个具有相同名称和不同参数数(多态性)的方法,因为我还必须在以前的测试方法中使用修改过的方法


有什么方法可以解决这个问题吗?

最好的解决方案是创建一个包含三个参数的新方法:

public String getData(WebDriver driver, int iRowNumber, Object third)
这种方法应该有新的逻辑。旧方法应使用默认参数调用新方法:

public String getData(WebDriver driver, int iRowNumber) {
    getData(driver, iRowNumber, DEFAULT_VALUE);
}

最好的解决方案是创建一个具有三个参数的新方法:

public String getData(WebDriver driver, int iRowNumber, Object third)
这种方法应该有新的逻辑。旧方法应使用默认参数调用新方法:

public String getData(WebDriver driver, int iRowNumber) {
    getData(driver, iRowNumber, DEFAULT_VALUE);
}

您的IDE应该进行重构“更改方法签名*,您可以在其中添加新参数并提供默认值,该值将在任何现有调用中插入。为什么不使用多态性?或者你不需要旧的方法,所以没有理由去测试它;或者它是需要的,那么拥有它就没有错误了both@CarlosHeuberger因为具有相同名称和不同参数的方法是重载的,而不是多态性…使已发布的API无效几乎总是一个非常糟糕的主意。为新功能创建新方法或更好的新类型。如有必要,
@Deprecate
旧方法或类型,但不要删除它。如果API还没有发布,那就重构吧@TimothyTruckle我很确定问题的作者使用它的意思不是这样(我的评论是针对他-没有使用@TimothyTruckle)。你的IDE应该进行重构“更改方法签名*,您可以在其中添加新参数并提供默认值,该值将在任何现有调用中插入。为什么不使用多态性?或者你不需要旧的方法,所以没有理由去测试它;或者它是需要的,那么拥有它就没有错误了both@CarlosHeuberger因为具有相同名称和不同参数的方法是重载的,而不是多态性…使已发布的API无效几乎总是一个非常糟糕的主意。为新功能创建新方法或更好的新类型。如有必要,
@Deprecate
旧方法或类型,但不要删除它。如果API还没有发布,那就重构吧@TimothyTruckle我很确定问题作者用它来表达的是另外一种意思(我的评论是针对他-没有用@TimothyTruckle)。