IntelliJ применяет исправление проверки во всем файле

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

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

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


person Andrew Mairose    schedule 16.02.2017    source источник
comment
Я думаю, это может помочь: intellij-support.jetbrains.com/hc/en-us/community/posts/   -  person Mzf    schedule 16.02.2017


Ответы (2)


Спасибо @Mzf за < a href="https://intellij-support.jetbrains.com/hc/en-us/community/posts/206886125-Applying-Suggested-to-the-whole-File" rel="nofollow noreferrer">ссылка!

Из этого поста:

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

Скриншот решения

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

person Andrew Mairose    schedule 16.02.2017

отсутствие ответа; и подкреплено моим мнением, но, в конце концов, также подкреплено многолетним опытом размышлений о темах качества кода:

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

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

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

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

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

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

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

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

person GhostCat    schedule 16.02.2017