java alias vs refactor方法

时间:2017-08-02 11:53:54

标签: java refactoring alias

我有两种方法

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();}

1 个答案:

答案 0 :(得分:1)

合理的答案最终是:

private static void a()

public static void callA() { ... a(); ...}

通过这样做,您可以清楚地表达您的意图,并允许编译器帮助查找a()的所有用法。

换句话说:任何界面都应该能够轻松做正确的事情,并且很难做错事。因此,当您希望使用callA()时 - 请确保此方法是可以调用的唯一。拥有公开可用方法aInternal()毫无意义。更糟糕的是:a()aInternal()周围是混淆 API用户的可靠方法!

除此之外:您使a() 私有已经的事实表达您的意图,使其成为内部方法。因此:对于像内部这样无意义的后缀,不要是“名称空间”。相反:使用表示方法背后的功能的名称 - 内部与外部可以使用修饰符public / private表示。