Я использую плагин PHP Inspections (EA Extended) с PhpStorm . По большей части это фантастика, но есть одна проверка, которая кажется несерьезной и делает код немного хуже. Предупреждение появляется сотни раз над моей кодовой базой.
[EA] Обтекание тела конструкций внутри блока (рекомендации PSR-2).
Вот типичный кодовый блок, который дважды вызывает предупреждение:
/**
* @param array $queryArgs
* @return array
*/
private function getRunArgs($queryArgs = []): array
{
if ( empty( $queryArgs ) || !is_array( $queryArgs ) )
return [];
foreach ( $queryArgs as $key => $queryArg ) {
if ( !empty( $queryArg ) )
$args[$key] = $queryArg['value'] ?? $queryArg;
}
return $args ?? [];
}
PhpStorm «исправляет» предупреждение, добавляя скобки в один оператор if
. Тот же код «исправлен»:
/**
* @param array $queryArgs
* @return array
*/
private function getRunArgs($queryArgs = []): array
{
if ( empty( $queryArgs ) || !is_array( $queryArgs ) ) {
return [];
}
foreach ( $queryArgs as $key => $queryArg ) {
if ( !empty( $queryArg ) ) {
$args[$key] = $queryArg['value'] ?? $queryArg;
}
}
return $args ?? [];
}
Описание предупреждения от репозитория плагина GitHub :
Сообщает, если условия и циклы (if / elseif/ else, foreach / for / while / do-while) не имеет тел или пустых тел.
Конструкции должны иметь операторы для переноса операторов группы;стиль кода, позволяющий опускать групповые выражения для конструкций, считающихся плохой практикой.
Описание является тавтологией и не говорит мне, почему это плохая практика. Я не смог найти соответствующую рекомендацию PSR-2, хотя это не обязательно означает, что она не существует.
Каков логический аргумент для включения скобок в однострочные условия?