java 别名与重构方法
java alias vs refactor method
我有两种方法
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()
和 (?) 创建一个 "alias" 方法 public static void a(){calla();}
合理的答案是:
private static void a()
public static void callA() { ... a(); ...}
通过这样做,您的意图绝对清楚,并且允许编译器帮助查找 a()
.
的所有用法
换句话说:任何界面都应该让做正确的事变得容易,而做错事却很难。因此,当您希望使用 callA()
时 - 请确保此方法是 唯一一个 可调用的方法。 公开可用方法aInternal()
没有意义。更糟糕的是:周围有 a()
和 aInternal()
肯定会 混淆 您的 API!
的用户
除此之外:您将 a()
设为私有 的事实已经 表达了 您打算将其设为 内部方法。因此:不要 "name space" 用于无意义的后缀,例如 internal。相反:使用表示方法背后的 功能 的名称 - 内部与外部可以使用修饰符 public/private 来表达。
我有两种方法
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()
和 (?) 创建一个 "alias" 方法 public static void a(){calla();}
合理的答案是:
private static void a()
public static void callA() { ... a(); ...}
通过这样做,您的意图绝对清楚,并且允许编译器帮助查找 a()
.
换句话说:任何界面都应该让做正确的事变得容易,而做错事却很难。因此,当您希望使用 callA()
时 - 请确保此方法是 唯一一个 可调用的方法。 公开可用方法aInternal()
没有意义。更糟糕的是:周围有 a()
和 aInternal()
肯定会 混淆 您的 API!
除此之外:您将 a()
设为私有 的事实已经 表达了 您打算将其设为 内部方法。因此:不要 "name space" 用于无意义的后缀,例如 internal。相反:使用表示方法背后的 功能 的名称 - 内部与外部可以使用修饰符 public/private 来表达。