如何更改 public 方法签名以及有哪些风险?

How to change a public method signature and what are the risks?

我有一个很少被第三方客户使用的旧方法,我想更改它的签名(主要是重命名)。

我应该怎么做?有什么风险?有什么真正的优势吗?

一个简单的例子:

Class Program
{
    public void OldMethodName(var oldVarName)
    {
        //Do something
    }
}

改为

Class Program    
{
    public void NewMethodName(var newVarName)
    {
        //Do the same thing
    }
}

当你的 API 在 public 使用时,你应该分两个阶段重构它:

  • 发布一个 API 都可用的版本 - 这个版本的 API 应该使新方法可用,并且 弃用 旧方法。这将使您的客户有时间进行迁移。
  • 等待一段时间后,发布一个删除了弃用方法的版本 - 如果可能,请与您的客户协调此版本以确保他们已迁移到使用新方法。

有关如何弃用方法的信息,请参阅 this Q&A

除了修复当前或潜在的命名冲突之外,更改 public 方法的签名没有任何优势。