我有两种方法
public static void a()
public static void calla() { ... a(); ...}
每个函数都有数十个调用,我需要将调用更改为仅对 calla()
(它将在内部调用 a()
)。
显而易见的方法是解决方案 1 - 重构所有内容以调用 calla()
而不是 a()
。
但是解决方案 2 有好处吗:
将方法 a()
更改为 aInternal()
并添加将由 calla()
调用的别名?
好处是更改只会发生在 1 个文件中,不会导致不同类中发生数十次更改。
解决方案 1:将所有调用从 a()
重构为 calla()
解决方案 2:public static void a() -> private static void aInternal()
和 (?) 创建一个“别名”方法 public static void a(){calla();}
最佳答案
合理的答案是:
private static void a()
public static void callA() { ... a(); ...}
通过这样做,您的意图绝对明确,并且允许编译器帮助查找 a()
的所有用法。
换句话说:任何界面都应该让做正确的事情变得容易,而做错误的事情很难。因此,当您希望使用 callA()
时,请确保此方法是唯一可以调用的方法。拥有公开可用的方法aInternal()
是没有意义的。更糟糕的是:使用 a()
和 aInternal()
肯定会迷惑 API 用户!
除此之外:事实上,您将 a()
私有(private) 已经表达了您将其设为内部的意图强>方法。因此: don't 是无意义的后缀(如内部)的“ namespace ”。相反:使用表示方法背后的功能的名称 - 内部与外部可以使用修饰符 public/private 来表达。
关于java别名与重构方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45460168/