Как быть эффективным в PhpStorm: IDE, которая действительно имеет значение
Опубликовано: 2022-03-11Что значит быть хорошим разработчиком программного обеспечения?
Во-первых, это требует глубоких знаний конкретного технологического стека, в котором вы работаете. Если вы разработчик LAMP, вам, несомненно, нужно быть экспертом в PHP и MySQL, знать современные фреймворки и иметь приличные навыки администрирования Linux.
Во-вторых, но не менее важно, это практическое знание дополнительных инструментов, которые вы используете каждый день в своем рабочем процессе.
Вы должны уметь правильно работать с системами контроля версий, инструментами непрерывной интеграции, службами управления виртуальными машинами (такими как Vagrant) и, разумеется, с вашей интегрированной средой разработки (IDE).
В этой статье рассказывается о популярной и надежной среде IntelliJ IDEA IDE PhpStorm и о том, как, приложив небольшие усилия, вы можете легко удвоить свою эффективность и даже предотвратить ошибки при написании кода.
Тренируйтесь с помощью сочетаний клавиш
Начнем с самого простого и, возможно, самого важного навыка для любой IDE: правильного использования клавиатуры.
Если вы сравните опытного программиста и обычного пользователя ПК, первое, что вы заметите, это то, что программист проводит почти все свое время с клавиатурой и почти никогда не прикасается к мыши. Для этого есть причина: это намного эффективнее.
Во-первых, станьте хорошим наборщиком
Хотя набор текста не связан напрямую с навыками IDE, сочетания клавиш бесполезны, если вам нужно смотреть на клавиатуру, чтобы найти каждую клавишу.
Если вы еще не печатаете как минимум 50 слов в минуту (WPM), найдите веб-сайт для обучения слепой печати, например TypingClub.com, и увеличьте скорость.
Существуют также веб-сайты для соревнований по набору текста, такие как TypingRaces.com, где вы можете соревноваться в наборе текста с другими людьми. Моя рекомендация? Участвуйте в гонках в качестве утренней разминки каждый день.
Приучите себя использовать горячие клавиши PhpStorm
Самый быстрый способ научиться — не давать себе альтернативы сочетаниям клавиш.
Когда я изучал ярлыки, я отключил все меню, вкладки, панели навигации и т. д. Вы также можете сделать это, перейдя в меню «Вид» и сняв все отметки (вы можете оставить «Строку состояния»):
Моя IDE теперь выглядит так:
Мне потребовалось около трех-четырех дней страданий, чтобы пройти этапы настройки, разбивающие ноутбук.
Если вы обнаружите, что ваша мотивация падает, в PhpStorm есть встроенное руководство по продуктивности. Он содержит список функций и статистику использования для каждой из них. Просто нажмите «Справка», затем «Руководство по повышению производительности», и вы увидите что-то вроде этого:
Как видите, ярлыки избавили меня от ввода более 20 000 дополнительных символов (в течение шести месяцев) и предотвратили около 1000 ошибок. Довольно мотивирует!
Он также сообщает мне, какие функции я использую не очень часто, определяя места, где я могу улучшить свои навыки быстрого доступа. Просмотрите свою статистику и используйте знания с умом.
Лучшие сочетания клавиш
Jetbrains предоставляет удобный PDF-файл со всеми доступными сочетаниями клавиш, перечисленными в его официальной документации, и, кроме того, имеет список «Сочетания клавиш, которые нельзя пропустить». Начните учиться этому немедленно, пока не сможете делать это во сне.
На сегодняшний день, мои любимые ярлыки:
-
Ctrl+ E- переключение между недавно использованными файлами -
Ctrl + /- прокомментировать/раскомментировать блок кода -
Ctrl + B— перейти к объявлению класса -
Ctrl + N- перейти к классу -
Ctrl + R- найти и заменить -
Ctrl +Alt + L— переформатировать код -
Alt + Enter— показать намерения действий и быстрых исправлений -
Ctrl + Shift + Enter— завершить выписку
Некоторые из них говорят сами за себя, другие могли бы использовать немного больше охвата.
Переключение файлов с помощью Ctrl + E и Enter
Представьте, что вам нужно часто переключаться между двумя файлами, например, между PHP-классом с бизнес-логикой вашего приложения и шаблоном, который используется для его рендеринга и вывода.
Многие разработчики переключались с клавиатуры на мышь, переходили на вкладку с файлом, кликали по нему и колесом прокрутки находили нужную часть. Проблема: это очень медленно!
Не лучше ли просто нажать Ctrl+E, а затем Enter?
Ctrl+E покажет вам список недавно использовавшихся файлов, и если вы сразу же нажмете Enter, вы переключитесь на файл, использовавшийся непосредственно перед текущим.
Если вы хотите вернуться, просто нажмите ту же последовательность еще раз.
Это самый быстрый способ переключения между двумя файлами всего тремя нажатиями клавиш! Только представьте, сколько времени вы сэкономите, когда будете делать это сотни раз в день.
Показать намерения действий и быстрых исправлений с помощью Alt + Enter
Любая современная IDE подсвечивает ошибки и дает некоторые предложения по улучшению кода. Если вы наведете курсор на любой незавершенный или недокументированный фрагмент кода, вы увидите значок лампочки, а если вы нажмете на него, вы увидите всплывающее меню возможных действий.
Это же действие можно сделать, нажав Alt+Enter , что намного удобнее.
В случае, показанном на скриншоте выше, PhpStorm предлагает два варианта: добавить в функцию спецификацию PHPDoc (это очень хороший совет, следите за обновлениями) и удалить неиспользуемый параметр.
Этот же ярлык можно использовать для множества других распространенных действий: создания геттеров и сеттеров для свойств класса, инициализации полей в конструкторах, добавления неопределенных методов и свойств и т. д.
Завершение операторов с помощью Ctrl+Shift+Enter
Этот ярлык очень прост и в то же время чрезвычайно полезен, он делает именно то, что он говорит.
Например, если вы наберете $i = 0 , а затем сразу же после этого нажмете Ctrl+Shift+Enter , PhpStorm добавит к вашему выражению точку с запятой. Если вы введете if и ярлык после него, PhpStorm добавит скобки и так далее.
Используйте этот ярлык как можно чаще. Это сэкономит вам много времени, так как весь код состоит из стандартных структур. Любое увеличение скорости написания структур также ускоряет написание кода!
Плагин IdeaVim
Использование ярлыков может значительно повысить вашу производительность, но если вам этого недостаточно, следующий уровень — плагин IdeaVim.
Как вы, наверное, знаете, Vim — это консольный текстовый редактор, широко используемый фанатами Linux и инженерами DevOps для администрирования удаленных серверов через командную строку.
У Vim есть две важные особенности.
Во-первых, трудно учиться. Во-вторых, если вы хорошо это знаете, это окупается. Ваша производительность при редактировании текста станет намного выше, чем при работе с любым редактором с графическим интерфейсом. В вашей карьере также будут ситуации, когда у вас не будет другого выбора, кроме как использовать консольный редактор, такой как Vim, (если вам нужно что-то исправить на удаленном веб-сервере, и у вас есть только консольный доступ к нему, например).
Но как Vim связан с PhpStorm?
Что ж, многие разработчики хотят совместить эффективность Vim с функциями современной IDE (например, завершение кода, поиск по классам, расширенный поиск и навигация). Для этого был создан плагин IdeaVim.
Важное примечание: с этого момента я предполагаю, что вы знакомы с основами Vim. Если вы этого не сделаете, вы можете начать использовать Vim с помощью vimtutor, который доступен почти во всех дистрибутивах Linux или openvim.
Установка плагина
1. Перейдите к «Файл», затем «Настройки», затем «Плагины» и введите IdeaVim в поле поиска плагинов. Поставьте галочку справа от названия плагина и нажмите «Применить». 2. Перезапустите PhpStorm. 3. Включите плагин, отметив «Инструменты», затем «Эмулятор Vim».
4. Оригинальные ярлыки PhpStorm и ярлыки Vim (включаемые плагином) могут конфликтовать друг с другом, поэтому вам необходимо разрешить эти конфликты вручную. Перейдите к «Файл», «Настройки», «Другие настройки», затем «Эмуляция Vim». Вы увидите список конфликтующих ярлыков. В этом списке вы можете выбрать, использовать ли ярлык PhpStorm или ярлык Vim, привязанный к этой последовательности клавиш. Вы можете увидеть мой текущий выбор на скриншоте ниже. Если вы не можете принять решение, просто оставьте ярлык неопределенным; PhpStorm попросит вас выбрать, когда вы используете его в первый раз.
Использование плагина
После включения плагина вы сразу заметите, что область редактирования становится похожей на Vim:
- Курсор изменил форму и стал прямоугольным, как в Vim.
- Если вы попытаетесь что-то напечатать в редакторе, ничего не произойдет.
С этого момента вы можете начать редактировать свои файлы точно так же, как в Vim, используя клавиши h , j , k , l для навигации и клавишу i для переключения между обычным режимом и режимом вставки и т. д.
Почти все ярлыки Vim поддерживаются плагином.
В то же время все функции IDE по-прежнему присутствуют, поэтому вы можете очень быстро редактировать текст, используя только клавиатуру (как в Vim), и по-прежнему переключаться между классами, файлами, использованиями и определениями (как в современном рабочем процессе PhpStorm).
Расширенный поиск
Одним из лучших преимуществ любой IDE перед обычными текстовыми редакторами является возможность реализации расширенного поиска.
Это может показаться излишним, если вы работали только с небольшими проектами, но когда вы начнете работать с большой кодовой базой, со сложными ООП-отношениями между классами, вы поймете, насколько это необходимо.
Конкретную строку в файле легко найти с помощью обычного поиска ( Ctrl + F ) или поиска и замены ( Ctrl + R ), но что, если вам нужно найти определение определенного класса в тысячах файлов? Или если вы хотите найти конкретный метод в классе, содержащем тысячи строк кода? Или, может быть, вы хотите исключить все комментарии из результатов поиска? Вот где современная IDE, такая как PhpStorm, помогает.
В этом разделе я покажу вам самые полезные варианты поиска в PhpStorm.
Найти в Пути
После обычного поиска проще всего искать определенную строку во всех файлах в какой-либо подпапке проекта. Его так легко реализовать в PhpStorm, что я использую его гораздо чаще, чем любые другие параметры поиска.
Например, найдите использование класса User в моем примерном приложении.
1. Нажмите Ctrl + Shift + F Вы увидите всплывающее окно с параметрами поиска. Введите « User » в строке запроса. Вы увидите ряд результатов на вкладке «Предварительный просмотр»:
2. Теперь мы можем переключиться на вкладку «Предварительный просмотр» и вручную найти там нужные результаты, но у нас более 100 совпадений. Скучный! Давайте будем более конкретными.
Прежде всего, мы ищем использование классов, поэтому давайте отметим опцию «только целые слова». Это поможет нам избежать таких результатов, как E_USER_ERROR .
Далее исключим поиск в комментариях и строковых литералах и ограничим наши результаты только файлами .php .
Также иногда имеет смысл указать более конкретную подпапку проекта. В этом случае весь специфичный для проекта код находится в папке app .
Итак, давайте изменим каталог области действия на example-app/app .
Теперь у нас есть окно поиска, подобное этому:
Просто уточнив параметры поиска, мы сократили количество результатов с сотен до 24!
Теперь очень легко проверить каждый из них вручную. Более того, нам даже не нужно открывать каждый файл отдельно, потому что у нас есть очень удобная вкладка предварительного просмотра:
В повседневной практике поиск по пути охватывает около 80 процентов всех поисков, которые я делаю. Это настолько полезно, что даже если вы ничего не используете для поиска, вы все равно будете довольно эффективны.
Перейти к декларации
Еще одна чрезвычайно важная способность PhpStorm (как и всех современных IDE) — переход между использованием и объявлением классов и функций.
Предположим, у нас есть функция, которая создает нового User . Очевидно, что мы не помним всех методов и свойств класса User , поэтому нам нужно изучить объявление класса, чтобы решить, как выполнить все необходимые действия. Есть несколько способов сделать это.
Во-первых, вы можете открыть объявление класса в виде всплывающего окна, доступного только для чтения.
Просто наведите курсор на любое использование класса и нажмите Ctrl + Shift + I . Появится окно только для чтения:

Вы можете просмотреть все необходимые данные и вернуться к исходному файлу. Это очень быстро; вам даже не нужно переключаться между файлами!
Но, как я уже упоминал, всплывающее окно доступно только для чтения, поэтому, если вы решили что-то изменить в классе User во время его изучения, вам понадобится еще одна комбинация клавиш: Ctrl + Shift + B
Это направит вас прямо к классу. Когда вы вносите изменения, вы можете легко вернуться к исходному файлу, используя Ctrl + E, Enter последовательность, которую мы рассмотрели ранее.
Список всех методов текущего класса
Последний вариант функции поиска, который я использую каждый день, — это «поиск по структуре класса». Иногда классы PHP очень длинные, и трудно найти конкретное свойство или метод.
Если вы нажмете Ctrl + F12 , когда файл класса открыт, вы увидите всплывающее окно со структурой класса:
Если вы начнете вводить имя метода, вы увидите только те методы, которые соответствуют введенному шаблону:
Просто представьте, что у вас около 100 методов (что не очень хорошо, но вы можете столкнуться с таким кодом), и вам нужно часто переключаться между двумя из них. Это может свести вас с ума, используя обычный поиск!
Вместо этого, используя поиск по файловой структуре, для каждого переключения потребуется около пяти нажатий клавиш. Просто наберите Ctrl + F12 , начните вводить имя нужного метода, нажмите Enter , и вы попадете на его объявление.
Кстати, Ctrl + F12 не является удобным, поэтому вы можете подумать о том, чтобы изменить его на что-то другое. Лично я использую Alt + R .
Методов поиска в PhpStorm гораздо больше, но эти три могут покрыть почти все повседневные поисковые задачи.
Краткий обзор функций поиска
- Если вам нужно найти что-то, найденное в нескольких файлах, используйте поиск по пути (
Ctrl + Shift + F) и постарайтесь сделать параметры поиска (фильтрации) как можно более конкретными. - Если вам нужно быстро увидеть исходный код класса или метода, используйте
Ctrl + Shift + Iи просмотрите его через быстрое всплывающее окно (если вам нужно его отредактировать, вместо этого перейдите к объявлению с помощьюCtrl + Shift + B). - Если у вас большой класс и вам нужно проверить его структуру или быстро переключиться между методами, используйте ярлык файловой структуры, по умолчанию
Ctrl + F12.
Использование живых шаблонов для всех основных языковых структур
Хотя ярлыки позволяют быстро писать код и перемещаться по нему, есть способ улучшить его еще больше — автодополнение и живые шаблоны.
Базовое автозаполнение довольно простое, и вы обязательно должны знать об этом.
Если вы начнете вводить имя класса, метода или переменной, любая хорошая IDE покажет вам список возможных окончаний. Вы можете выбрать любой из них и не печатать до конца.
Тем не менее, вы можете пойти гораздо дальше с живыми шаблонами.
В этом разделе вы узнаете, какие живые шаблоны я использую в своей повседневной работе. Я делю их на три группы: базовые языковые конструкции, функции с длинными именами и фрагменты HTML.
Основные языковые конструкции
Излишне говорить, что разработчики используют стандартные конструкции языка, такие как while , for , foreach , if много раз в день, поэтому крайне неэффективно каждый раз вводить их с нуля. Поэтому в PhpStorm для них есть встроенные живые шаблоны.
Чтобы немного изменить жизнь магии живого шаблона, откройте PhpStorm, введите forek в области редактирования и нажмите Enter . Вы увидите это:
PhpStorm заменил шаблон полным циклом foreach и подготовил заглушки для всех необходимых переменных. Вам просто нужно заполнить правильные имена переменных.
Если вы нажмете Ctrl + J , вы увидите список поддерживаемых в настоящее время живых шаблонов, применимых к текущему месту кода. Вы можете выбрать любой из них.
Как вы могли заметить, здесь отсутствуют некоторые очень часто встречающиеся конструкции. Например, мне всегда не хватает живого шаблона для цикла while , так что давайте его создадим!
Перейдите в «Настройки», затем «Редактор», затем «Живые шаблоны», выберите «PHP» и нажмите зеленый «+» в правом верхнем углу всплывающего окна:
Заполните поле «аббревиатура» с помощью «wh», а поле «описание» с «в то время как (bool_expr) {…}». Поле «Текст шаблона» должно содержать следующее:
while($EXPR$) { $END$ }Нажмите ссылку «Определить» под текстовой областью «Текст шаблона» и выберите «PHP» из списка, чтобы он знал, в каком контексте использовать этот шаблон.
Теперь давайте обсудим, как это работает.
Когда вы wh, Enter в области редактирования, он будет заменен текстом шаблона.
Курсор переместится на первую переменную шаблона, в нашем случае $EXPR$ , затем вы можете ввести любое выражение (например, $i > 0 ) и снова нажать Enter .
После этого курсор переместится на следующую переменную (в данном примере она только одна) и так далее. $END$ — это специальная переменная, обозначающая место, куда должен переместиться курсор после заполнения всех переменных.
У нас есть только одна переменная, поэтому она будет перемещена в $END$ сразу после того, как мы заполним $EXPR$ , и мы будем готовы ввести тело цикла.
Создавайте собственные живые шаблоны для всех языковых конструкций, которые вы часто используете. Гораздо лучше потратить некоторое время заранее, чем тратить его каждый день на ввод таких конструкций с нуля.
PHP-функции
К сожалению, PHP имеет репутацию языка с длинными и непоследовательными именами функций.
Хорошей новостью является то, что вы можете заменить их короткими сокращениями, используя живые шаблоны. Например, если вы хотите правильно проверить, существует ли какой-либо ключ в массиве, вам нужно вызвать функцию array_key_exists($my_key, $my_array) .
Вводить его каждый раз крайне утомительно даже при стандартном автодополнении, поэтому просто создавайте живые шаблоны для всех таких случаев.
Лично я предпочитаю ake для array_key_exists, вы можете выбрать любой другой. Вот как создать живой шаблон ake:
Фрагменты HTML
Последнее, но не менее популярное использование живых шаблонов — это обработка фрагментов HTML.
Если вы еще не используете живые шаблоны, держу пари, вы проделали много утомительной (и в основном бесполезной) работы по созданию стандартных элементов HTML-разметки. Живые шаблоны меняют это, делая то, что мы сделали выше, но с полем «текст шаблона», являющимся вашим HTML.
Избегайте ошибок с помощью PHPDocs
Итак, вы узнали советы и рекомендации по повышению эффективности PhpStorm, но подождите, это еще не все. Эффективность — не единственная область, в которой он может помочь, он также может помочь избежать ошибок, даже до первого запуска вашей программы.
Из коробки PhpStorm сообщает об очевидных ошибках.
Например, если вы забыли точку с запятой после оператора, она будет отмечена красным, но эта функциональность тривиальна, поэтому я не буду ее описывать.
Что интересно, так это то, что PhpStorm сообщает вам о гораздо более сложных ошибках, когда вы предоставляете ему необходимую информацию через PHPDocs.
В идеале спецификации PHPDoc являются обязательными для вашей команды для всех методов и должны быть максимально строгими. Снова рассмотрим пример с нашим классом User . Предположим, у нас есть функция, которая возвращает массив объектов User :
По умолчанию это не задокументировано, поэтому другие разработчики могут не знать тип возвращаемого значения и использовать его неправильно.
Например, какой-то другой разработчик хочет получить список имен пользователей. Она почему-то думает, что у объекта User есть метод getName(). Но на самом деле это не так, поэтому разработчик ошибается:
PhpStorm не рассматривает это как ошибку, потому что ничего не знает о переменной $user. Так что это остается незамеченным, и мы получаем очень неприятную ошибку.
Первый вариант — просто включить строгую типизацию, что стало возможным в PHP7, но предположим, что мы не можем этого сделать по какой-то причине. Возможно, мы работаем с устаревшим кодом. В этом случае нам поможет PhpStorm, если мы позволим.
Чтобы это работало, вам нужно сгенерировать PHPDoc для каждой функции. Это обычно считается хорошей привычкой, и это поможет вам избежать ошибок, поладить с другими разработчиками и даже пройти собеседования, на которых работодатели изучают ваш исходный код.
Чтобы сгенерировать PHPDoc, подведите курсор к названию функции, нажмите Alt + Enter , выберите пункт «Создать PHPDoc для функции» во всплывающем меню и снова нажмите Enter .
Появится базовый шаблон PHPDoc:
Вы можете видеть, что PhpStorm догадался, что возвращаемое значение является массивом, но не смог догадаться, что это массив объектов User , поэтому давайте явно оговорим это, изменив 'array' на 'User[]' вместо этого:
Теперь, когда мы рассказали PhpStorm все, что ему нужно знать о методе, давайте вернемся к вызову метода getUserNames() :
Теперь, когда PhpStorm может анализировать объявление возвращаемого типа PHPDoc, он может указать нам на ошибку и даже подсказать, что именно не так. PhpStorm в сочетании с PHPDocs может сделать PHP очень строгим языком! Удивительный результат!
PhpStorm не только для PHP-разработчиков
В то время как все затронутые темы сосредоточены на разработке PHP, PhpStorm основан на очень мощной платформе IntelliJ, что позволяет использовать различные языки, фреймворки и технологические стеки, далекие от мира PHP.
Фронтенд разработка
Даже если вы являетесь бэкенд-разработчиком, вам время от времени придется решать некоторые проблемы с интерфейсом. Это может быть простое исправление в HTML-разметке, добавление параметра в REST-клиент, написанное на AngularJS и т. д. Хорошая новость в том, что все это можно сделать в PhpStorm.
Основное эмпирическое правило: проверьте, поддерживается ли он из коробки. Если нет, попробуйте найти плагин.
Например, Javascript, CSS и популярные препроцессоры CSS, такие как LESS и SASS, поддерживаются по умолчанию. Поддержка AngularJS легко добавляется в виде плагина (путь установки такой же, как и для плагина IdeaVim). С таким мышлением вы сможете решить почти все возможные фронтенд-задачи.
Работа с базами данных
Обычно базы данных приложений управляются через командную строку или специальные инструменты, такие как MySQL Workbench, но и здесь вам может помочь PhpStorm.
Просто нажмите «База данных» в правом углу экрана, и вы увидите список доступных баз данных (изначально пустых) и окно запроса с автозаполнением, как и в общей области редактирования, что делает его очень удобным.
PhpStorm поддерживает практически все современные базы данных. MySQL, PostgreSQL, Oracle Database и SQLite поддерживаются «из коробки», а MongoDB поддерживается с помощью установки плагина.
СРЕДНИЙ стек
Последний и самый удивительный пример не-PHP — разработка стека MEAN.
MEAN означает MongoDB, ExpressJS, AngularJS, Node.js.
Это популярный стек технологий, который используется практически везде. Это очень быстро и очень хорошо для быстрых и легких веб-сервисов.
Даже будучи разработчиком PHP, я иногда создаю службы Node.js в качестве дополнительных инструментов для проектов PHP (например, службы веб-сокетов, простые серверные части чат-ботов и т. д.).
Как вы, наверное, догадались, в PhpStorm поддерживаются все компоненты стека MEAN, поэтому всякий раз, когда вам нужно создать проект стека MEAN, имейте в виду, что вам не нужна другая IDE. PhpStorm отлично справится с этой задачей.
Сила PhpStorm в ваших руках
Используя мощь PhpStorm и ключевые навыки, описанные в этой статье, вы тоже можете повысить свою эффективность и предотвратить появление ошибок еще до того, как закончите печатать.
