PHPStorm — Когда IDE действительно имеет значение

Всё про веб
PHPStorm - Когда IDE действительно имеет значение

Я люблю быстрые, простые текстовые процессоры. Будучи пользователем Linux, я редко покидал Kate и KWrite в течение нескольких лет.

Несколько трюков и плагинов сделали эти процессоры очень умными. Я даже сделал все работы вPHP и Java..

Я знаю, как это волнительно!Отличный текст изText MateОднако сегодня я не являюсь полным.

Культура

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

Однако это влияет на усвоение и удобство использования приложения. Вот их предпочтительные разработчикиVi (метры) изEmacs..

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

Результатом этого является совершенно иное мышление и взгляд на проекты и код. Поскольку я являюсь разработчиком этой категории, в этой статье описаны IDE, которые я использую в настоящее время.PHP Storm..

В целом, я редко пишу о каком-то конкретном фреймворке или приложении, поскольку инструменты и предпочтения пользователей быстро меняются. Однако если вы используете приложение в течение 10-14 часов каждый день, оно становится частью вас и частью того, как вы воспринимаете свой код и проекты.

Это станет основным элементом вашего ежедневного рабочего процесса. Поэтому его стоит упомянуть и представить.

Так, в чем разница?

В прошлом, когда вам нужно было написать короткие сценарии или программный код, вы использовали быстрый текстовый редактор. Больше нет.

Современные компьютеры и интегрированные среды разработки настолько быстры, что время, необходимое для их запуска, практически одинаково.PHP Storm. Начните писать или выполнять в нем кодKWrite. Напишите код в этом редакторе.

Само приложение работает почти так же быстро, как текстовый процессор, и даже если у вас есть один или два рабочих файла, создание проекта занимает почти столько же времени, сколько создание этих файлов в редакторе.

Приятно… Это все общие черты. Но как насчет специальных возможностей IDE? Аббревиатура IDE происходит от термина Интегрированная среда разработки. Фраза содержит две основные части: среду интеграции и среду разработки.

Часть среды разработки можно представить как процессор со специальными возможностями для различных операций над исходным кодом (функции создания кода, подсветка, автозаполнение, функции комплексной обработки, такие как массовая выборка и массовая обработка, инструменты рефакторинга и т.д.).

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

Важной функцией IDE является понимание кода, который вы пишете. IDE делает больше, чем просто перечисляет команды, доступные в вашем любимом языке, например, PHP. Он поддерживает сложные алгоритмы, предназначенные для понимания вашего кода.

PHPStorm не предоставляет команды или выражения, которые являются синтаксически неправильными. Он знает, например, что нельзя писать«print(‘ Hello World&.#8217;);»? непосредственно в классе, не инкапсулируя выражение в функцию.

Поэтому IDE не предоставляет команд.«print()»? если она недоступна. Однако это лишь верхушка айсберга.

Давайте рассмотрим несколько более конкретных примеров.

Использование PHPStorm в серии 'Рефакторинг сгенерированного кода'

Да, вы можете использовать PHPStorm в серии 'Рефакторинг сгенерированного кода'. Если вы прочитали первые две части серии статей "Рефакторинг сгенерированного кода»: Золотой волшебник иМагические строки и константывы могли заметить включение скриншотов IDE.

Другими словами, чтоPHP Storm.. В результате вы можете увидеть, какPHP Storm. поможет научить вас программировать.

Выделение кода.

Это очень важно, так как позволяет выделить код в IDE —. Большинство простых редакторов также могут выделять код, но IDE — это совсем другая история. Вы можете установить разные метки для разных языков, например , , , , , и т.д.

У каждого из них свои правила. Например, вы хотите, чтобы линии были зелеными —. Апельсин:.

Выделение кода

В левой части отображаются все поддерживаемые типы файлов и языки (некоторые из них могут быть добавлены с помощью плагинов). В центре вы увидите различные языковые компоненты PHP, которые могут быть настроены индивидуально. В правом верхнем углу у вас есть следующие опции. можно применить к каждому элементу, при этом в нижней части появляется окно предварительного просмотра.

При поиске магических строк в последовательности рефакторинга их можно было легко найти, просто отыскав оранжевый текст на экране. То же самое относится к магическим константам и числам. При их поиске синий цвет помогал в этом.

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

Обзор инструментов для рефакторинга

За свою карьеру я использовал множество IDE и редакторов. Я очень люблю и ценюNetBeans.. Однако примерно через пять лет эксклюзивного использованияNetBeans.Мне пришлось сдаться.

Есть кое-что, предоставленноеPHP Storm.Вы не найдете этого ни в одном другом редакторе или IDE для PHP. Это набор инструментов для моддинга, которые необходимы для повседневной работы.

Подсветка, отступы, управление проектами, шаблоны, макросы — все эти функции есть в большинстве процессоров. Интеграция с тестовой средой и отладчиком является стандартной частью IDE. Но умные, сложные инструменты для восстановления —- это уже совсем другая история.

ЧИТАТЬ ЕЩЁ:  Web 2.0 для дизайнеров

Мы, программисты, тратим половину своего времени на чтение кода и около 40% времени на изменение и модернизацию существующего кода. Если нам действительно повезет, то 10% нашего времени уходит на создание нового кода.

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

Вы не будете тратить время и —- что еще важнее —- усилия на мелочи. Если вы сможете отложить в IDE соображения, связанные с процессами, и думать только о логике, алгоритмах, зависимостях и принципах, вы увидите значительное улучшение производительности, и это стоит рассмотреть.

Именно поэтому я сохранил его бесплатным и с открытым исходным кодом!NetBeans. и оплаченPHP Storm.. Инструментарий модификации представляет собойPHP Storm. действительно особенный и стоит своих денег.

Представление локальных переменных

Один из самых простых типов рефакторинга, который мы уже рассмотрели с помощью магических строк и констант, это "Представление локальных переменных", также известный как "Экспорт переменных».

Краткое напоминание о шагах, необходимых для использования этого типа модификации.

Добавить переменные с нужными значениями? Найти впечатление от всех его значений? Замените внешний вид всех переменных.

Это легко, если переменная имеет значение, которое нужно преобразовать, но как быть со вторым шагом? Как найти все появления именно этой цены?

Вам необходимо проанализировать код и принять осознанное решение о том, что следует заменить, а что нет. Например:.

class SomeClass <
 
    function printAPairOfPlayers() <
        Echo " player is:.
 
        Echo " Имя игрока: ". $ this-> getRandprayername (),.
        Echo " Имя игрока: ". $ this-> getRandprayername (),.
    >
 
    function printOnePlayer() <
        Echo " Имя игрока: ". $ this-> getRandprayername (),.
    >
 
    function getRandomPlayerName() <
        // Логика для определения имени игрока //.
        $ playname и возвращает
    >
 
>

В printapairofplayers(вы можете видеть эту строку & # 171,)Имя игрока:.» повторяется дважды. Если вы хотите извлечь этот алфавитно-цифровой символ в локальную переменную, переменная в функции должна заменить оба видаprintapairofplayers()вместо одного изprintOnePlayer().

Если вы хотите извлечь буквенно-цифровые символы изprintOnePlayer() 100 линий ниже, но даже не может быть уверен, что есть еще одна двойная линия к другому методу.

Поэтому необходима локальная переменная. Сначала мы создаем переменную, запускаем тест, затем ищем строку и находим ее во втором операторе.

Мы заменяем его, запускаем тест, снова смотрим, находим его в последнем утверждении, заменяем его и снова запускаем тест. Мы смотрим снова, пока не дойдем до конца метода.

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

Не проще ли просто нажать кнопку или выбрать меню и опцию в IDE, чтобы сделать все это? Это было бы очень здорово, иPHP Storm. он достаточно хорош для этого.

Для приведенного выше кода выполните строку & # 171,.Имя игрока:. » Где бы вы ни находились, нажмите:.

Представление локальных переменных

После выбора команды:"Переменная выхлопная труба & # 8230,.», PHP Storm. Он анализирует код и ищет котировки в различных указанных кодах.

В нашем случае он ищет два варианта выражения.

Представление локальных переменных - 2

Это не просто отличный прием, он очень полезен. Часто удвоение может происходить вне поля зрения.

При запросе на извлечение переменных PHPStorm просматривает все разрешение кода, а не только несколько строк видимой части экрана. В этом случае варианты, выбранные из вариантов, подлежащих выбору, абсолютно точны.

В данном примере выделим только часть строки, без какой-либо комбинации.

PHPStorm - Когда IDE действительно имеет значение

Теперь, когда вы определили отрывок кода, который хотите экспортировать, следующий шаг — мы называем его. &.<#171;PlayerHeadersString&#>187; — что, по-видимому, является правильным именем переменной.

В начальном кадре нам не нужно ставить один#171;» перед ее именем.PHP Storm. автоматически помещается в код. Другим важным аспектом является то, что существует также дополнительная опцияPHP Storm. Восстановите все видимости переменных.

Вы выбрали экспорт локальных переменных.PHP Storm. только текущий метод и обнаружил только два появления.

На одной линииprintOnePlayer()Этот метод не рассматривался, не был предусмотрен и не будет заменен. В противном случае в коде возникает ошибка иPHP Storm. Достаточно умный, чтобы предупредить об этой ошибке:.

PHPStorm - Когда IDE действительно имеет значение

Недостаточно тестов.

Еще одно преимуществоPHP Storm. заключается в том, что тесты не нужно проводить так часто. При рефакторинге вручную вы запускаете тесты после каждого последующего шага.

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

Но вы также можете использоватьPHP Storm. который не соответствует контекстной логике, не может быть заменен. Вы можете удивиться, что не видите кода, который следовало извлечь, но, по крайней мере, вы можете быть уверены, что то, что было исправлено, будет исправлено правильно.

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

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

Экспорт переменных класса

Для экспорта строки в переменную класса, также называемую —поле класса—. Вы можете использовать опцию Rebuild".Поля экспорта" из того же контекстного меню, как описано выше.

ЧИТАТЬ ЕЩЁ:  Бот – что такое. Как искусственный интеллект заменяет работу людей

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

Экспорт переменных класса

В дополнение к именам переменных отображаются все три найденные вхождения.PHP Storm. распознает, что требуется переменная класса, и при необходимости может указать ту же строку.

Также предусмотрены различные опции для инициализации переменных в различные моменты времени и настройки их видимости. После выбора необходимых опций, как показано на рисунке, результатом будет следующий код

Извлечение переменных класса - 2

Конечно, если вы хотите разделить или инициализировать переменные в конструкторе, вы можете выбрать соответствующие параметры и установить параметрPHP Storm. Он делает работу за вас.

Инициализация контекстно-зависимых переменных

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

Давайте рассмотрим, как извлекать переменные из магических строк и констант.

Инициализация контекстно-зависимых переменных

В методеRoll (), строка 73 —selected — является числом &.#171;«?. Это магическое число, которое вы только что установили и которое будет извлечено.

Если вы хотите извлечь вручную, вам необходимо выполнить следующие действия

Определите переменную в строке перед строкой со значением 11? Провести тест? Присвоить значение переменной? Провести тест? Найдите другое вхождение значения 11? Определите его в 90 строках? Присвоить значение переменной? Провести тест? Выдает ли он ошибку? Где я должен разместить инициализацию переменной, чтобы она работала? Но следует ли размещать инициализацию переменной как можно ближе к тому месту, где она будет использоваться? Переместить инициализацию переменной на один уровень вверх? Запустите тест. За пределами всего оператора if, следует ли перенести инициализацию переменных на один уровень выше? Запустите тесты. Проходят ли они в итоге? Искать дальнейшие инциденты? Больше не найдено. Работа завершена.

Как видите, это очень сложный процесс. И она полна ошибок. Мы предполагаем, что вам может помочь тест, но что, если вы работаете с человеком, который совершенно неразборчив, и код трудно проверить?

PHP Storm. Распознает контекст собственного кода. Он правильно извлекает переменные для всех случаев и помещает их именно туда, где они необходимы.

Инициализация контекстно-зависимых переменных - 2

Дно айсберга

Приведенное выше обсуждение — это лишь верхушка айсберга. Экспорт переменных — это, пожалуй, самый простой и легкий способ модификации.

Мы еще не использовали метод экспорта или экспорта подклассов в курсе перестройки, а также несколько более сложный метод переименования, но мы обязательно это сделаем.

Мы научим вас, как сделать это вручную, но мы рекомендуем использовать интеллектуальную IDE, которая сделает всю работу.

Переименование

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

PHP Storm. может сделать это за 5 минут, а нужно около 2 часов. Вы можете найти и переименовать все методы, и все, что вам нужно сделать, это проверить их на несоответствие, прежде чем сказать, что все в порядке.

Да, да … вам нужно проверить некоторые взгляды, которые вы можете найти, потому что это динамический тип языка и в некоторых случаях #8212. Не толькоPHP Storm. — другие алгоритмы IDE или программы такого рода не могут распознать тип объекта, используемого для конкретного вызова метода.

Представьте, что у вас есть два совершенно разных класса. В каждом из них у вас есть открытый метод под названием«findAll()»?. Это очень распространенная ситуация.

Почему вы должны оценить эти изменения?

Предположим, что 50 классов используют первый класс и еще 50 классов используют второй класс. Если вы используете соответствующий интерфейс и спецификацию типа везде, где это возможно, тоPHP Storm. предложит подходящую категорию для обмена.

Однако, если вы не указали тип или используете интерфейс, реализованный в классеfindall().метод, не существует способа автоматически определить, какой из двухfindall().должен быть использован метод.

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

Учитывая все вышесказанное, важно, чтобыPHP Storm. имеет и другие возможности, кроме перестройки, но это все еще лучшая IDE, если реорганизация является вашей основной целью.

Переименование переменных, экспорт, встраивание, экспорт метода и интеграция — это самые распространенные функции модификации, которые мы делаем каждый день. Если у нас здесь все хорошо, то это уже наш IDE выбор.

Однако, если вы используетеPHP Storm. не останавливается на достигнутом. Существует множество других инструментов для моддинга, которые помогут вам в сложных ситуациях. Это действительно позволяет чувствовать себя уверенно.

Тестирование и обзор кода

Является ли TDD не тем путем, которым следует идти? Если нет, то так и должно быть. Это тестирование не менее важно при планировании фактического написания кода. Лично я не могу представить свою жизнь без TDD.

За последние годы я настолько привык, что мне кажется неестественным рассматривать код без существенных тестов.

Испытание и IDES

Процесс тестирования и инструменты должны быть так же хороши, как и сам код.PHP Storm. имеет отличную интеграцию сphpunit..

Это единственныйphp ide. Я знаю, что он интегрируется непосредственно сphpunit.Расширьте его и используйте для сбора всей необходимой информации.

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

ЧИТАТЬ ЕЩЁ:  BuddyPress — социальный WordPress

Другие IDE обычно просто используют исполняемый файлphpunit., который записывает функции в XML-файл, извлекает их, интерпретирует и отображает результаты. Вдобавок к этомуNetBeans..

Такой подход дает вам больше гибкости как пользователю при обходе системы и выполнении нестандартных тестов (например.telnet ).

Однако у него есть и некоторые существенные недостатки. Все начинает работать медленно.

Кроме всего прочего, процессы оболочки должны разветвляться, что не всегда возможно в случае процесса оболочки (например, telnet).«exec()»? Она всегда потребляет много ресурсов. В этом случае результат должен быть зарегистрирован в отдельном файле, возможно, на удаленном компьютере.

Мы все знаем, что файловые системы работают медленно, очень медленно. Твердотельные накопители немного ускоряют работу, но они все еще далеки от скорости, с которой работает оперативная память.

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

Затем файл необходимо прочитать, чтобы выдать его пользователю.

Это очень гибкое решение, но трудоемкое. Существует слишком много случаев юнит-тестов и миллисекунд на выполнение теста. А модульные тесты, которые длятся дольше 5 миллисекунд, вообще перестают считаться модульными тестами.

Внутреннее использование phpunit

PHP Storm. Решает проблему или, по крайней мере, снижает потребление ресурсов, используяphpunit. И экспортировать предпочтительные результатыPHP Storm. Метод.

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

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

Еще одним приятным преимуществом является немедленное использованиеphpunit. что позволяет получать более подробную информацию о неудачных тестах. Это представлено в более организованном виде.

Это дает преимущества скорости, детализации и четкости информации за счет гибкости.

После работы надNetBeans.Первоначально было трудно смириться с такой ограниченной гибкостью, но в итоге преимущества более узкой интеграции phpunit оказались значительными, даже когда требовалось запустить внешние сценарии для проверки кода на удаленных машинах.

Организация и поиск файлов

Поскольку большинство из этихPHP Storm. также является проектно-ориентированным приложением. Как правило, проект содержит исходные и тестовые файлы. ОзабоченностьPHP Storm.необходимо указать отдельную папку в качестве тестовой папки.

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

Организация и восстановление файлов

Но это еще не все. Если вы хотите искать и запускать файлы с помощьюPHP Storm. имеет уникальную особенность: перейти кВсе (Искать все) — Мне нравится эта функция.

Прежде всего, он работает при нажатии горячих клавишShift + Shift (Double Shift) очень проста в использовании и является второй по полезности функцией навигации.

Она появилась совсем недавно, но до этого были отдельные панели навигации и кнопки для поиска файлов по имени, поиска файлов по имени класса и поиска файлов, содержащих символы (имена переменных или методов).

Так что я могу просто нажатьShift + Shift и начинаю вводить нужные мне параметры. Это приятно и быстро.

Заключительное слово

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

Но мы должны остановиться на этом. Как кульминация мини-марафона по функциям PHPUnit.PHP Storm.Это краткий обзор некоторых других функций, которые я считаю очень полезными:

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

Есть несколько хороших шаблонов, которые делают это так, что, например, время, необходимое для добавления изображения в статью, сокращается до времени, необходимого для нажатия клавиши на клавиатуре. Вместо того чтобы указывать синтаксис и стиль изображения.

Управление проектами. —Это довольно стандартная функция IDE. Все файлы организованы в проекты. Однако разработчикJetBrains. они достигли чего-то действительно великого.

Механизм индексирования чрезвычайно быстр. Ни одна другая IDE не может загрузить наши большие проекты.Синет. Очень быстро. И сразу же изучите его.

На самом деле, интегрированные среды разработки, такие какNetBeans изЗатмение. и их производные обычно не могут индексировать все произведение.

Это делает поиск очень медленным.PHP Storm. Она работает адекватно и очень быстро по сравнению с другими IDE.

Интеграция версионности документации. Еще один актив — thePHP Storm.. Mercurial, , , Subversion.и список можно продолжать.PHP Storm. С каждым из них вы чувствуете себя как рыба в воде.

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

Как пользователь яPHP Storm.и пришлось использовать его для подачи команд, наверное, пару раз. И это сработало.

Макросы. —Пригодится для небольших, но надоедливых повторяющихся задач, которые нужно всегда выполнять. В PHP каждая строка должна заканчиваться двоеточием. Как часто курсор находится в конце строки, когда вы закончили всю строку?

Редко. Обычно вы работаете в контексте самой строки. Заключите некоторые параметры, например, в скобки. Затем нужно переместиться в конец строки и нажать &.#171;;»?. Это легко автоматизировать с помощью макроса.

Оцените статью