我有两种方法
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();}
答案 0 :(得分:1)
合理的答案最终是:
private static void a()
public static void callA() { ... a(); ...}
通过这样做,您可以清楚地表达您的意图,并允许编译器帮助查找a()
的所有用法。
换句话说:任何界面都应该能够轻松做正确的事情,并且很难做错事。因此,当您希望使用callA()
时 - 请确保此方法是可以调用的唯一。拥有公开可用方法aInternal()
毫无意义。更糟糕的是:a()
和aInternal()
周围是混淆 API用户的可靠方法!
除此之外:您使a()
私有已经的事实表达您的意图,使其成为内部方法。因此:对于像内部这样无意义的后缀,不要是“名称空间”。相反:使用表示方法背后的功能的名称 - 内部与外部可以使用修饰符public / private表示。