1

我有很多课(至少 45 课)。每个都有自己的方法来验证在所有类中重复的东西,所以我在所有这些类中重复了代码。我想要一种方法并从所有类中调用它。

如果有以下代码可以知道移动设备是否正在连接服务器

private boolean isMobileDevice(HttpServletRequest request) {
    String userAgent = request.getHeader("user-agent");
    return userAgent.indexOf("Windows CE") != -1;
}

如前所述,此方法在许多类中重复

在 Intellij Idea 和/或 Eclipse 中是否可以进行重构?以及如何执行该重构?

4

2 回答 2

0
private boolean isMobileDevice(HttpServletRequest request) {
        String userAgent = request.getHeader("user-agent");
        return userAgent.indexOf("Windows CE") != -1;
}

我打赌我的 Eclipse 会警告我这个方法可以声明为static,因为它不使用封闭类的任何字段 - 这种方法应该声明为静态的,让你知道封闭类本质上不需要它,如果会有一个原因(有 45 个方法代替一个是原因)你可以将它移动到其他一些类,然后将它称为公共或包方法。

编辑:它做到了:The method isMobileDevice(HttpServletRequest) from the type Test can be declared as static::

所以:

将它复制到其他类,制作public static boolean isMobileDevice(HttpServletRequest request)并在它所在的每个类中使用private boolean

仅此而已,但我没有看到以及通过自动重构来实现它的方法。

于 2013-05-02T17:04:45.723 回答
0

使用 Intellij,您可以尝试"Refactor" > "Find and Replace Code Duplicates...". 它将用静态函数替换重复的代码。

于 2014-03-24T17:42:21.730 回答