Подтвердить что ты не робот

Intellij IDEA 13: как отключить комментарии и строки рефакторинга?

public class KV<K, V> {
    public K key;
    public V value;
    public KV(K key, V value) {
        this.key = key;
        this.value = value;
    } 
}

Я пытаюсь реорганизовать переменную класса value, которая происходит на месте. Это означает, что диалог не открывается; Я нажимаю кнопку ввода, и он пытается реорганизовать весь проект, включая комментарии, а что нет, в том числе:

<%--<link href="<c:url value="../core/core.css" />" />--%>

в файле .jsp. Это слишком "умно", чтобы попытаться реорганизовать комментарии, которые соответствуют всему проекту. Это часто приводит к большому риску ошибки, а рефакторинг в среде Java более не является безопасным.

То же самое происходило в Intellij 12. Серьезно, мне не нужно Intellij рекомендовать что-либо, что считается небезопасным, или когда оно не уверен, что это одно и то же!

Я могу исключить рефакторинг, но у меня нет времени для оценки пяти "предложений" каждый раз. Это просто повышает вероятность человеческой ошибки: большую часть времени я просто нажимаю кнопку ввода, и все вещи реорганизуются.

Рефакторинг также является серьезной проблемой в среде Java, когда она иногда пытается заменить файлы в .js. Серьезно, это должно прекратиться.

Без всплывающего диалога я не могу отменить "строки поиска". Даже если это было отмечено, Intellij никогда не должен включать предложения по умолчанию, особенно если он находится за пределами текущего файла. Он также может рекомендовать реорганизовать их, но они должны быть исключены по умолчанию. То есть, это должна быть функция выбора, а не по умолчанию уничтожать все.

Это серьезная проблема с пользователем с более поздним так называемым "умным" рефакторингом Intellij. При рефакторинге JS файлов я не хочу искать файлы Java для комментариев или строк! Период! И наоборот!

Безопасность на первом месте! Разработчики, которые знают, что они делают, будут искать сами строки, если это необходимо. В динамической языковой среде это делает Intellij невозможным использовать, потому что часто и без какой-либо четкой картины иногда рефакторинг проходит, иногда он меняет вещи по проекту, а что нет.

Должна быть опция, которая говорит: "рефакторинг только по отношению к этому файлу или когда 100% выведен!", особенно для динамических языков! Для статических языков он не должен даже пытаться искать комментарии и строки вне файла.

Я не собирался публиковать это, но я поставил этот вопрос более 2 лет назад в bugtracker, но никто не обратил внимания.

ИЗМЕНИТЬ

Для тех из вас, кто думает, что я могу уйти далеко, я просто попробовал это:

С этим классом:

public class KV<K, V> {
    public K key;
    public V val;
    public KV(K key, V val) {
        this.key = key;
        this.val = val;
    }
}

И добавив это в класс любой Java, например:

public class CoreConfig {
    String abc = "kv.val";
    String def = "somethingElse.val";
}

При рефакторинге KV.val, как и прежде, я получаю следующие рекомендации: ENTER от катастрофы и что-то, что я должен оценивать и исключать по одному. Это требует усилий и просто раздражает и рискованно. Это как кто-то кричит, ОСТАНОВИТЕ! И тогда ох, ничто после минуты, разочарования и 1000 длинного слова эссе (это).

enter image description here

Серьезно, есть ли способ отключить такое рискованное поведение!? И есть ли причина, по которой это по умолчанию?
4b9b3361

Ответ 1

Когда вы дважды нажимаете Shift + F6 (Refactor Rename), он открывает диалоговое окно, и вы можете отключить "Поиск по комментариям и строкам"

Ответ 2

И есть ли причина, по которой это по умолчанию?

Да, есть. В наши дни люди склонны использовать слишком много DSL, шаблонов и языковых инъекций. В простой старой Java все эти вещи в основном существуют как строки. API Reflection также представляет имя метода/класса как String. Невозможно, чтобы любая IDE поддерживала и распознавала их все, поэтому лучше всего предоставить вам защитную сетку от возможных ошибок рефакторинга. Однако, если у вас отличное покрытие unit test, тогда вы, вероятно, будете здесь в безопасности.

Что касается комментариев, они часто содержат образцы кода. Эти куски кода быстро устаревают во время переименований, поэтому полезно, когда IDE напоминает вам о своем существовании.

Эта проверка, конечно, иногда приводит к ложным срабатываниям. Однако, если вы даете свои переменные описательные самоочевидные имена (я имею в виду не "var" или "val" ), это вряд ли произойдет. Таким образом, IDE каким-то образом подталкивает вас к лучшему стилю кода.

Если вы все еще не уверены, следуйте советам @Meo и отключите поиск в строках и комментариях.