отсутствие ответа; и подкреплено моим мнением, но, в конце концов, также подкреплено многолетним опытом размышлений о темах качества кода:
Я знаю, это стиль; но все же я думаю, что ваш стиль бесполезен. Иначе. Итак, ответ: не делайте этого. Не ставьте final
на любую переменную без разбора.
Дело в том, что вы хотите, чтобы ваш исходный код был точным и подробным... но также и "минималистичным". Имейте в виду: каждый символ, который был написан... должен быть прочитан. И «разбирается» и «обрабатывается» человеческим мозгом читателей.
Итак, вы хотите сбалансировать то, что вы записываете. Дело в том, что в большинстве случаев эти ключевые слова final
не добавят никакой ценности вашему исходному коду. Нуль.
Есть только два места, где final
действительно имеет значение:
- Поля класса. По умолчанию они должны быть
final
, потому что это на полпути к неизменяемым объектам; что само по себе очень хорошо. Конечно, иногда вы должны разрешить полям изменять свое значение; но как сказано: это должно быть исключением.
- Переменные, которые входят в лямбда-выражения, анонимные внутренние классы, ... другими словами: переменные, которые должны быть защищены от изменения; так что становится «безопасным» использовать их в «другом» контексте. Но угадайте, что: в Java8 компилятор даже научился эффективно обнаруживать конечные переменные. Таким образом, вы можете использовать их в ламбадах даже без ключевого слова
final
. Так что даже отцы языка Java советуют вам избегать использования этого ключевого слова!
Но помимо этих двух случаев; в вашем коде есть миллионы мест, где наличие final
только способствует вводу, который ваш мозг должен переварить; без добавления ценности вашей программе.
Короче говоря: сделайте шаг назад на секунду и заново подумайте, чего вы пытаетесь достичь с помощью этой политики.
Наконец: и вы уверены, что не забудете отменить ваши изменения в чужом коде? Как видите: не все поддерживают ваш стиль; поэтому вы должны не только спрашивать, как легко изменить другой код; но и как позже отменить эти изменения. Предположим, вам нужно внести несколько реальных изменений в этот исходный код; а затем внесите их в свой репозиторий - действительно ли вы хотите затем войти и отменить final
изменения, которые вы сделали вручную; при этом гарантируя, что все другие, «реальные» изменения будут сохранены.
person
GhostCat
schedule
16.02.2017