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

Вы PHP-разработчик и стремитесь к успеху в своих проектах?

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

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

1. Замените жестко заданные значения константами.

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

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

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

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

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

Вот пример того, как вы можете определять и использовать константы в PHP:

private const EVENT_NAME = 'Birthday';

public function getEventName(): string
{
    Return self::EVENT_NAME;
}

Как определить константу в PHP:

  • Используйте ключевое слово const перед определением имени константы.
  • Определите имя константы заглавными буквами.

Преимущества использования констант по сравнению с жестко заданными значениями:

1. Легче поддерживать ваше приложение

Изменить значение константы легко, вы просто меняете одно место, где константа определена.

Но изменение жестко запрограммированного значения, на которое ссылаются во всем приложении, занимает много времени, и вы, вероятно, пропустите ссылки.

2. Константы делают ваш код более читабельным

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

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

Например:

$totalCost = 100 * 10;

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

Но если вы назначите осмысленные имена своим жестко закодированным значениям через константы, вы можете предоставить дополнительный контекст:

$totalCost = self::HOURLY_RATE * self::HOURS_WORKED;

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

Используйте строгое сравнение на равенство, а не свободное сравнение на равенство.

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

Вы всегда должны использовать строгое сравнение на равенство, а не свободное сравнение на равенство.

Избегать этого — значит напрашиваться на неприятности.

При строгом сравнении сравниваются значение и тип данных

public function strictComparison(): bool
{
    $value1 = 1;
    $value2 = "1";
    
    return $value1 === $value2;
}

Включает использование трех знаков равенства для проверки того, что значение и тип данных совпадают.

В приведенном выше примере функция strictComparison возвращает значение false, хотя и $value1, и $value2 имеют одинаковое значение, но у них разные типы данных.

Свободное сравнение сравнивает только значение

public function looseComparison(): bool
{
    $value1 = 1;
    $value2 = "1";

    return $value1 == $value2;
}

Нестрогое сравнение использует два знака равенства для проверки значения только двух элементов.

В приведенном выше примере функция 'looseComparison' возвращает значение true, так как они оба содержат одно и то же значение, а при свободном сравнении не учитывается тип данных.

Преимущества строгих сравнений:

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

Недостатки строгих сравнений:

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

3. Избегайте использования else в условных операторах

Условные операторы if полезны для разделения действий в зависимости от конкретных ситуаций.

Но нас, новичков, учат за каждым оператором if следовать оператором else, если какое-то условие не выполняется.

Но оператор else часто не нужен:

public function isUserLoggedIn(User $user): string
{
    if ($user->isLoggedIn() === true){
        $message = 'User is logged in';
    }
    else {
        $message = 'User is not logged in';
    }

    return $message;
}

В приведенном выше примере мы используем стандартный оператор if/else, чтобы узнать, вошел ли пользователь в систему или нет.

Теперь давайте попробуем без оператора else:

public function isUserLoggedIn(User $user): string
{
    if ($user->isLoggedIn() === true){
        return 'User is logged in';
    }

    return 'User is not logged in';
}

Результат точно такой же, как и при использовании оператора if/else, но с меньшим количеством кода и более легким для чтения.

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

Преимущества минимизации операторов else:

  • Упрощенная логика. Чем меньше операторов else, тем легче понять логику кода, и используется меньше строк кода.
  • Уменьшенная вложенность.Вложенность слишком большого количества операторов else может затруднить понимание кода.

Недостатки минимизации операторов else:

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

4. Используйте тернарные операторы, чтобы избежать сложных условий

Условные операторы могут стать сложными при чрезмерном использовании.

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

Вот пример использования тернарных операторов в PHP:

public function isUserLoggedIn(User $user): string
{
    return $user->isLoggedIn() ? 'User is logged in' : 'User is not logged in';
}

В приведенном выше примере мы проверяем, вошел ли пользователь в систему, вызывая $user-›isLoggedIn:

  • Если метод isLoggedIn() возвращает true, возвращается первая строка «Пользователь вошел в систему».
  • В противном случае возвращается вторая строка «Пользователь не вошел в систему».

Тернарный оператор – это сокращенная версия оператора if/else.

Преимущества тернарных операторов:

  • Удобство чтения простых условий:большие операторы if могут сбивать с толку при чтении и неестественном исполнении.
  • Краткое отображение условных выражений. Тернарные операторы могут уместиться в одной строке кода.

Недостатки тернарных операторов:

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

Используйте определенные исключения в операторах try/catch

Операторы try/catch помогают корректно обрабатывать ошибки в коде и предупреждают систему мониторинга о том, что что-то идет не так.

Но при написании операторов try-catch лучше использовать конкретные исключения, а не общие.

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

 try {
    // Code which would throw the specific exception
 } catch (InvalidTypeException $e) {
    // Handle the specific exception
 }

Преимущества конкретных исключений:

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

Недостатки конкретных исключений:

  • Большая сложность. По мере того, как исключения становятся более конкретными, необходимо добавлять дополнительный код для учета каждого исключения, что усложняет код.
  • Увеличение объема кода. По мере добавления в код более конкретных исключений вам придется добавлять в приложение больше кода, что замедлит скорость разработки.

Внедрение этих пяти советов по кодированию повысит эффективность и читабельность вашего PHP-кода

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

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

Какие ваши любимые советы по кодированию, которые должен знать каждый PHP-разработчик?

Если вам понравилась эта статья и вы хотите поддержать мою работу, зарегистрируйтесь на Medium по этой реферальной ссылке https://tomdob1.medium.com/membership, чтобы получить неограниченный доступ ко всем статьям на Medium.

Повышение уровня кодирования

Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:

  • 👏 Хлопайте за историю и подписывайтесь на автора 👉
  • 📰 Смотрите больше контента в публикации Level Up Coding
  • 💰 Бесплатный курс собеседования по программированию ⇒ Просмотреть курс
  • 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"

🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу