java别名与重构方法

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

最佳答案

合理的答案是:

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/

相关文章:

java - 对于创建/重构启用和/或查看实体之间关联的 wicket 组件有什么建议吗?

java - 进行提取方法重构后,代码变慢了 6 倍

java - 在 IntelliJ 中重新排序 Java 类的方法的简单方法?

c# - 查询 dns 别名

mysql - 无法获取所有结果以显示在 4 表查询中

git - 试图将我的头脑围绕在 PowerShell 上——函数、别名等

java - Apache POI getFontAt (XLS)

Java SE 7 - 检查嵌套对象是否为 null 的最佳方法

java.lang.VerifyError IllformedLocaleException 异常

Java数据类型问题