Простой пользовательский рефакторинг в IntelliJ

Этот вопрос является продолжениемза это.

Скажем, у меня есть класс Foo.

class Foo {
    protected String x = "x";

    public String getX() {
        return x;
    }
}

У меня есть программа, которая использует Foo и нарушает LoD (Закон Деметры).

class Bar {
    protected Foo foo;

    public Bar() {
        this.foo = new Foo();
    }

    public Foo getFoo() {
        return foo;
    }
}

public static void main(String [] args) {
    Bar bar = new Bar();
    String x = bar.getFoo().getX(); 
}

Я могу реорганизовать этот код для использования LoD в два этапа.

⌥⌘m bar.getFoo().getX() ->getFooX(bar) (извлечь в метод, также найти и заменить вхождения)F6 getFooX(bar) ->bar.getFooX() (перейти к методу экземпляра, также найти и заменить вхождения)

Программа, которая используетBar больше не нарушает LoD.

class Bar {
    protected Foo foo;

    public Bar() {
        this.foo = new Foo();
    }

    public Foo getFoo() {
        return foo;
    }

    public String getFooX() {
        return foo.getX();
    }
}

public static void main(String [] args) {
    Bar bar = new Bar();
    String x = bar.getFooX();
}

Мне интересно, есть ли способ сделать собственный метод рефакторинга в IntelliJ, который бы объединял эти два шага в один.

РЕДАКТИРОВАТЬ Я получил ответ от JetBrains со ссылкой на уже существующий запрос функции. Пожалуйста, проголосуйте, если вы найдете это полезным!

Привет Майкл,

Кажется, у нас есть аналогичный запрос в YouTrack:https://youtrack.jetbrains.com/issue/IDEA-122400, Не стесняйтесь голосовать за него и оставлять комментарии.

С наилучшими пожеланиями, Ярослав Бедров JetBrains

РЕДАКТИРОВАТЬ Существует, по крайней мере, способ проверки на наличие проблем закона Деметры.скриншот http://i59.tinypic.com/2s80ft0.png

Вот суть который содержит профиль проверки, который будет просто искать нарушения LoD. Вы можетеимпортировать его в IntelliJ.

Ответы на вопрос(1)

Ваш ответ на вопрос