2017-02-16 3 views
1

В IntelliJ, я инспекция, которая проверяет переменные, которые могут быть сделаны final включена так, что IntelliJ будет выделить те переменные, и позвольте мне быстро добавить final ключевое слово с Alt + Enter.IntelliJ применять инспекции исправить на протяжении всего файла

Когда я открываю чужой код, который обычно не использует ключевое слово final, я бы хотел, чтобы быстрый способ добавить final ко всем переменным, которые могут быть по всему файлу или даже по всему проекту, если это возможно.

Есть ли какой-либо ярлык или какой-либо другой способ сделать это легко в IntelliJ?

+2

Я думаю, это может помочь: https://intellij-support.jetbrains.com/hc/en-us/community/posts/206886125-Applying-Spected-to-the-whole-File – Mzf

ответ

0

Не-ответ; и подкрепляется моим мнением, но, в конце концов, также подкрепляется многолетним опытом мышления по темам качества кода:

Я знаю, это стиль; но все же, я думаю, что ваш стиль не поможет. Иначе. Поэтому ответ: не делайте этого. Не ставьте final на любую переменную без разбора.

Дело в том, что вы хотите, чтобы ваш исходный код был точным и подробным ... но также и «минималистичным». Имейте в виду: каждый и любой персонаж, который был написан ... нужно читать. И «разобрал» и «обработал» мозг читателей.

Итак, вы хотите сбалансировать то, что вы записываете. И дело в том, что: больше всего времени, те final ключевое слово будет не Добавить любую ценность в исходный код. Нуль.

Есть только два места, где final действительно делает разницу:

  1. поля класса. Это должно быть final по умолчанию - потому что это дает вам на полпути до неизменный объектов; что по-настоящему очень хорошо. Конечно, иногда вы должны позволять полям изменять их значение; но, как сказано: это должно быть исключением.
  2. Переменные, которые входят в лямбда, анонимные внутренние классы, ... другими словами: переменные, которые должны быть защищены от изменения; так что становится «безопасным» использовать их в «другом» контексте. Но угадайте, что: с Java8 компилятор даже научился обнаруживать эффективно конечных переменных. Таким образом, вы можете использовать их в lambads даже без ключевого слова final. Поэтому даже отцы языка Java предлагают вам избегать использования этого ключевого слова!

Но за этими двумя случаями; есть дваллионы мест в вашем коде, где finalтолько способствует вкладу, который ваш мозг должен переваривать; без добавления ценности вашей программы.

Короче говоря: отступите на второй план и передумайте, чего вы пытаетесь достичь с помощью этой политики.

Наконец, и вы уверены, что вы будете помнить отменить изменения в чужого кода?Как вы можете видеть: не каждый поддерживает ваш стиль; поэтому вы должны не только спрашивать, как легко изменить другой код; но и как вернутьсяте изменения назад позже. Предположим, вы должны внести несколько реальных изменений в этот исходный код; а затем передать их в ваш репозиторий - действительно ли вы готовы пойти и отменить внесенные вручную изменения final; обеспечивая при этом сохранение всех других «реальных» изменений.

2

Благодарим вас за @Mzf за link!

С этого поста:

Вы можете достичь этого в текущем файле, используя типичные Alt + Введите ярлык при наведении курсора на одну из таких переменных, которые могут быть сделаны final, пресс , и выберите «Исправить все» Локальная переменная или параметр могут быть окончательными «проблемами в файле».

Screenshot of solution

Следующий пункт вниз в этом подменю есть «Выполнить осмотр ...», которая позволит вам применить исправление для нескольких файлов в вашем проекте.

Смежные вопросы