-
Notifications
You must be signed in to change notification settings - Fork 49
Description
1.3. Выравнивание присвоений переменных и элементов массива
Довольно спорное решение. Я бы сказал вкусовщина. Я когда-то очень давно применял этот подход и результат мне не понравился. Улучшается читаемость только если название переменных (ключей массива) и присваиваемые им значения имеют примерно одинаковую длину.
$inside_left_floating_width = 0;
$inside_right_floating_width = 0;
$outside_left_floating_width = 0;
$outside_right_floating_width = 0;Если разница в длине значительная, то образуются большие дырки которые осложняют чтение кода как в вашем примере:
$varName = 'varName';
$secondVariableWithVeryLongNameHere =
'123456790123456790123456790123456790123456790123456790123456790123456790123456790';Другой утрированный пример более наглядно демонстрирующий проблему.
$user_access_token = $user_access_token_storage->get();
$i = 1;
$has_promote_articles = false;
$result = [];
$ids = [];
$categories = [];
foreach ($article_rep->slice($start, self::PER_PAGE) as $article) {
// ...Ещё добавление пустых отступов увеличивает длину кода объявления переменной и мы раньше упремся в лимит в 120 символов на строку и нам раньше потребуется разбивать код на строки, что приведет к увеличению длинны метода и ухудшению читаемости из-за распухших методов и мы раньше упремся в ограничение длинны метода.
$choice_translation_domain = 'article';
$total = $article_rep->countOf(
new PublishedArticles(new \DateTimeImmutable()),
new Cache(self::CACHE_TTL)
);Вот еще кусок кода взятый из реального не моего проекта отформатированный в соответствии с вашим требованием. Отступы в начале строки нужны потому, что код имеет глубокую вложенность.
$descendant_delimeter = strrpos($query, '::');
$isChild = substr($query, $descendant_delimeter - 5, 5) === 'child';
$el = substr($query, $descendant_delimeter + 2);
$query = substr($query, 0, strrpos($query, '/')).
($isChild ? '/' : '//').$el;
// потребовалось сделать перенос так как уперлись в 120 символов
$p = $i + 1;
$nth = trim(mb_substr($selector, $p, strpos($selector, ')', $i) - $p));
// другой логический блок переменных который имеет свои отступы и
// вступает в диссонанс с предыдущим блоком из-за разницы длинны в отступахТак диссонанс будет нагляднее
$descendant_delimeter = strrpos($query, '::');
$isChild = substr($query, $descendant_delimeter - 5, 5) === 'child';
$el = substr($query, $descendant_delimeter + 2);
$query = substr($query, 0, strrpos($query, '/')).($isChild ? '/' : '//').$el;
$p = $i + 1;
$nth = trim(mb_substr($selector, $p, strpos($selector, ')', $i) - $p));Пройдясь несколько раз по всем этим граблям, я заметил, что читаемость улучшается в крайне малом числи случаем. В большинстве случаев читаемость ухудшается и появляются дополнительные проблемы.
Я не помню, что бы мне на GitHub попадался хотя бы один проект который бы использовал такое форматирование, что как бы тоже наводит на мысль о несостоятельности решения.