更改接口是否属于重构

2007年9月2日

更改代码部分的接口是否属于重构?

这个问题的答案很简单 - 更改接口属于重构,前提是你也更改了所有调用者。一个很好的例子是 重命名方法,它是一个几乎所有重构工具都包含的接口更改重构。

更改所有调用者是此重构的关键部分。仅仅更改接口声明会导致系统崩溃 - 因此不是行为保持更改。

接口更改重构假设你可以获取所有调用者,这就是为什么你必须对 发布接口 更加谨慎的原因。对于发布接口,接口本身是系统可观察行为的一部分。

动态语言可能会使这些更改变得更加麻烦。静态类型在这里确实有助于精确地确定在不同点调用了哪个接口。反射调用也可能使查找变得更加困难,无论是通过将方法名称嵌入字符串中,还是在运行时进行组合。这也是在即使有重构工具的环境中,测试也至关重要的另一个领域。