我有2种方法
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()
私有的事实已经表达了你的意图,使其成为一种内部方法。因此:对于像内部这样无意义的后缀,不要是“名称空间”。相反:使用表示方法背后功能的名称 - 内部对外部可以使用修饰符public / private表示。