- PVSM.RU - https://www.pvsm.ru -

Настройка IDEA для чистокодеров

Я люблю две вещи: Intellij IDEA [1] и чистый код (Clean Code [2]).
IDEA создана для чистого кода. Многие дефалтовые настройки уже стимулируют вас писать как надо.

Настройка IDEA для чистокодеров
Но она всё ещё не идеальна.
Когда я устанавливаю новую копию IDEA, я пробегаю по настройкам и выставляю свои любимые галочки.
Хочу ими с вами поделиться в надежде, что когда-нибудь и они станут дефалтовыми.

Чистый код — это

Для начала напомню, что такое чистый код в моём понимании. Чистый код — это (в том числе)

  • Минимум комментариев. Код должен быть читаем сам по себе.
  • Небольшие функции. Длинные функции должны быть разбиты на несколько маленьких с говорящими именами.
  • Частые коммиты. Каждый коммит должен быть атомарным и делать одно изменение, а не кучу разных.
  • Тесты. Не просто наличие тестов, а предельное внимание к ним.

Давайте посмотрим, что нужно настроить в IDEA, чтобы она способствовала написанию чистого кода.

Мои любимые галочки

Стандартные заголовки

Первым делом я всегда удаляю самый большой буллщит в Intellij IDEA — стандартный заголовок файлов:
Настройка IDEA для чистокодеров [3]

Вся информация об авторах и датах должна храниться в специально отведённом для этого месте — системе контроля версий. Я не хочу захламлять этим код!

Аналогичным образом удаляю стандартные заголовки для некоторых языков:
Настройка IDEA для чистокодеров [4]

Неисключительные исключения

Примерно в том же меню я удаляю надоедливые «throws Exception» в шаблонах для JUnit:

Настройка IDEA для чистокодеров [5]

Настройка IDEA для чистокодеров [6]

Они не нужны в большинстве случаев и только загрязняют код.

Чем меньше кода, не несущего полезной логики — тем лучше!

А там, где они понадобятся, IDEA добавит их на раз.

За чистотой тестов надо следить ещё внимательнее, чем за чистотой кода!

Автоматический импорт

Дальше я ставлю галочку «auto import». Когда я пишу в коде новое имя класса, пусть IDEA сама его моментально импортирует. Почему я должен беспокоится о том, что компьютер может сделать за меня? Лучше я не буду отвлекаться от действительно важных мыслей.

Настройка IDEA для чистокодеров [7]

Это аццки удобная фича, попробуйте!

Работа с вкладками

Возможно, это уже дело вкуса и зависит от проекта, но для меня ограничение в 5 табов — просто неприемлимо. 20 как минимум! И когда я закрываю вкладку C, я интуитивно ожидаю, что я окажусь в предпоследнем месте B (откуда я пошёл в C). А когда я закрою и B, мне кажется логичным вернуться в A. Поэтому ставлю галочку «Activate most recently used tab». Варианты «пойти налево» и «пойти направо» — просто нонсенс.

Дорогой Дед Мороз, пожалуйста, убери их вообще из настроек IDEA, а я обещаю вести себя хорошо!

Настройка IDEA для чистокодеров [8]

Show usages

Далее я обязательно назначаю комбинацию клавиш Ctrl+F7 на действие «Show usages». Это очень удобное действие, я его использую, наверное, чаще всех остальных! По умолчанию у него какая-то другая комбинация клавиш, не такая удобная. А Ctrl+F7 по умолчанию делает что-то другое, не такое полезное.

Настройка IDEA для чистокодеров [9]

А действие «Show Usages» показывает все места, где используется данная переменная/метод, прямо тут же, в маленьком всплывающем окошке. Это чертовски удобно, не нужно переключать внимание и переносить взгляд в другое место! По нему можно удобно бегать вверх-вниз стрелками и закрывать простым ESC. Навигация на кончиках пальцев!

Вот как выглядит Show Usages в действии:
Настройка IDEA для чистокодеров [10]

ВерблюжьиГорбы

Важная опция, про которую не все знают — это CamelHumps. Эта опция говорит, как должна вести себя IDEA со словами типа AbstractStudentFactory, где есть несколько заглавных букв. Я лично предпочитаю, чтобы

  • IDEA выделяля всё слово целиков, когда я дважды кликаю на него мышкой, и
  • IDEA бегала между большими буквами, когда я хожу по слову влево-вправо стрелками с нажатым Ctrl.

То есть если курсор стоит в начале слова AbstractStudentFactory, и я нажимаю Ctrl+вправо, я хочу, чтобы курсор скакнул к началу подслова «Student», а не сразу в конец. В IDEA по умолчанию ровно наоборот.

Первый пункт регулируется в Settings -> Editor (самая перва галочка):
Настройка IDEA для чистокодеров [11]

А второй там же, в подменю «Smart keys»:
Настройка IDEA для чистокодеров [12]

Автосохранение файлов

Многие знают (или догадываются), что IDEA автоматически сохраняет файлы, когда ты переключаешься в другую программу. Или когда запускаешь тесты. Это здорово. Не нужно постоянно нажимать Ctrl+S.

Вы не поверите: я до сих пор не могу избавиться от привычки постоянно жать Ctrl+S, хотя пересел с Eclipse на IDEA уже три года назад! Вот какая вредная привычка.

Но ещё было бы полезно, если б IDEA сохраняла файлы и просто так, когда я иду за чаем. Поэтому ставлю галочку «Save files automatically»:
Настройка IDEA для чистокодеров [13]

И благодаря этому могу смело поставить ещё одну галочку, чтобы IDEA не спрашивала меня «Are you sure you want to exit IDEA»?
Настройка IDEA для чистокодеров [14]

Меня не надо об этом переспрашивать. Я не боюсь закрыть IDEA в любой момент, потому что всегда могу открыть её снова, и там будут все мои файлы в целости и сохранности.

Inspections

Автоматические проверки кода — в наше время обязательное умение для IDE. В IDEA их много, полезных и не очень, не буду тут все рассматривать. Но одну я ставлю обязательно, причём строго с приоритетом «Error»: это «Missing @ Override annotation».
Настройка IDEA для чистокодеров [15]

Это не имеет отношения к чистому коду. Просто я однажды провёл несколько вечеров в поиске зловредной неповторяемой баги, которая случалась потому, что кто-то случайно написал в подклассе метод с таким же именем, как в суперклассе (а именно, метод setUp в тесте). С тех пор я ревностно ставлю проверку на отсутствующую аннотацию @ Override.

Частые коммиты

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

Когда я следую этим правилам и коммичу 3 файла из 8 (остальные 5 я собираюсь тут же послать следующим коммитом), IDEA предлагает перенести остальные 5 файлов в другой «changeset». Возможно, это когда-то могло показаться удачной идеей, но в большинстве случаев я всё-таки собираюсь вскоре закоммитить и остальные 5 файлов тоже. Поэтому отключаем эту галочку:
Настройка IDEA для чистокодеров [16]

Далее, когда я сделал несколько маленьких коммитов и хочу это дело запушить (git push), я сталкиваюсь с проблемой, что в IDEA нет комбинации клавиш для Push, а искать эту команду в меню реально неудобно. Делаем свой шорткат Ctrl+Shift+K:
Настройка IDEA для чистокодеров [17]

Это удобно запомнить: Ctrl+K — коммит, Ctrl+Shift+K — пуш.

Дорогой Санта, добавь Ctrl+Shift+K в IDEA по умолчанию?

Учите, учите и ещё раз учите шорткаты!

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

Но один плагин я ставлю обязательно. Это Key Promoter plugin — надоедливый подсказчик, заставляющий меня учить шорткаты. Каждый раз, когда я выбираю какое-то действие мышкой, он тут же говорит мне: «А ты таки мог это сделать такой-то комбинацией клавиш!» Он такой надоедливый, что ты волей-неволей начинаешь использовать эти шорткаты, лишь бы не видеть его лишний раз.
Настройка IDEA для чистокодеров [18]

Обратная связь

И наконец, последняя галочка. Я хочу, чтобы IDEA анализировала мою работу с ней и ежедневно посылала собранную информацию в JetBrains. Это мой вклад в развитие отличного продукта Intellij IDEA.

Автор: asolntsev

Источник [19]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/news/51180

Ссылки в тексте:

[1] Intellij IDEA: http://habrahabr.ru/post/112749/

[2] Clean Code: http://padabum.com/d.php?id=336

[3] Image: http://www.ljplus.ru/img4/a/s/asolntsev/006.templates.header.png

[4] Image: http://www.ljplus.ru/img4/a/s/asolntsev/006.templates.javascript.png

[5] Image: http://www.ljplus.ru/img4/a/s/asolntsev/006.templates.junit_test.png

[6] Image: http://www.ljplus.ru/img4/a/s/asolntsev/006.templates.junit_setup.png

[7] Image: http://www.ljplus.ru/img4/a/s/asolntsev/005.editor_auto_import.png

[8] Image: http://www.ljplus.ru/img4/a/s/asolntsev/005.editor_tabs.png

[9] Image: http://www.ljplus.ru/img4/a/s/asolntsev/008.keymap_show_usages.png

[10] Image: http://www.ljplus.ru/img4/a/s/asolntsev/008.keymap_show_usages_example.png

[11] Image: http://www.ljplus.ru/img4/a/s/asolntsev/003.editor_settings.png

[12] Image: http://www.ljplus.ru/img4/a/s/asolntsev/004.editor_smart_keys.png

[13] Image: http://www.ljplus.ru/img4/a/s/asolntsev/007.save_files_automatically.png

[14] Image: http://www.ljplus.ru/img4/a/s/asolntsev/001.are-you-sure-to-exit.png

[15] Image: http://www.ljplus.ru/img4/a/s/asolntsev/002.missing_override.png

[16] Image: http://www.ljplus.ru/img4/a/s/asolntsev/012.suggest_to_move_changelist.png

[17] Image: http://www.ljplus.ru/img4/a/s/asolntsev/009.keymap_push.png

[18] Image: http://www.ljplus.ru/img4/a/s/asolntsev/010.plugin_key_promoter.png

[19] Источник: http://habrahabr.ru/post/206714/