Почему код Wordpress такой «космический»?

22

Ядро WP, многие плагины WP и стандарты кодирования WP сами используют очень «щедрое применение» Spaceсимвола (не для отступа, а «внутри» скобок и скобок). Это кажется уникальным для Wordpress - этот стиль / философия, кажется, не присутствует в других подобных проектах, PHP или иным образом.

Для получения дополнительной информации об этом подходе см .: https://make.wordpress.org/core/handbook/coding-standards/php/#space-usage.

Пример: foreach ( (array) $foo as $bar ) { ...

Я имею в виду пространство после foreach, после первого (и перед финалом )(и другие подобные пробелы, показанные в разделе «Использование пространства» по ссылке выше).

Этот стиль кажется мне ненужным - он требует большего набора текста и (мнение) делает визуальный анализ кода более сложным. (/ Мнение)

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

введите описание изображения здесь

Ответы, предоставленные на вопрос М. К. Сафи, по существу:

  1. Для удобства чтения
  2. Статус-кво (он же "Так оно и есть")

Мой аргумент состоит в том, что я лично не вижу особой ценности в принятии стандартов кодирования WP (относительно «использования пространства») в наших внутренних проектах. Тем не менее, мне любопытно, если я что-то упустил.

Есть ли какие-либо причины, помимо двух перечисленных выше, якобы действительные или нет, для следования стилю Wordpress «Использование космического пространства»?

rinogo
источник
2
Вы можете делать то, что вам нравится в ваших внутренних проектах, если вы последовательны. В качестве примечания, мы используем табуляции, а не пробелы, поэтому мы, вероятно, требуем меньше набирать тексты, но это не имеет никакого значения, если у вас есть современная среда IDE, которая выполняет все форматирование для вас и может переформатировать для различных стилей для вас (например, возвышенный с пакетами, PHPStorm и т. д.)
Том Дж. Новелл
Спасибо за ваш комментарий, @TomJNowell! Я думаю, что, возможно, я неправильно понял в своем «вопросе» - я спрашиваю меньше о вкладках / пробелах для отступа, и больше о правилах, упомянутых в разделе «Использование пространства» на make.wordpress.org/core/handbook/coding-standards/php / ... . Извините, я не был более ясным!
Риного
5
Это легче читать, когда у вас нет подсветки синтаксиса. По крайней мере, поэтому я использую этот стиль во внутренних проектах. Я должен редактировать PHP часто в простой консоли с vi в минимальной конфигурации.
Fuxia
2
FWIW, MediaWiki имеет очень похожее соглашение по стилю и на самом деле довольно строго соблюдает его (по крайней мере, в ядре). У них даже есть скрипт для автоматического добавления пропущенных пробелов. Все, что я могу сказать, это то, что к этому привыкли через некоторое время.
Илмари Каронен
1
@rinogo Я знаю, комментарии иногда просто комментарии, а не ответы :)
Tom J Nowell

Ответы:

13

Resoning

Относительно «пробела» (не важно, табуляция или пробел): это просто личное предпочтение, которое застряло в проекте.

Стандарты кодирования WP imo являются беспорядком и могут быть проигнорированы - если вы не вносите вклад в ядро, которое

  • другая история и
  • там также игнорируется руководство по стилю.

«[...] он не применяется задним числом в старом коде, поскольку делает историю svn / git очень трудной для использования. Официальная политика заключается в том, что новый код должен следовать руководству по стилю, но если вы правильно отформатировали смежный код тогда так и будет, но патчи, которые только форматируют код, или коммиты, которые только форматируют код, запрещены. "

- @TomJNowell в комментариях

альтернативы

Вам лучше придерживаться стандартов PSR (а именно: 2) или таких вещей, как стандарты Symfony (или только ваши собственные).

Увеличение производительности и инструменты

Вы не получите никакой прибыли от наличия стандарта кодирования (кроме того, что им нужно делиться, и меньшинства, которое его ненавидит, в то время как остальные диктуют это), или от наличия более или менее табуляции или пробелов. В случае, если вас беспокоит использование ненужного дискового пространства или, возможно, более медленные программы, вы все равно можете сжать свой код (см. Проект GitPHPHooks ) при коммите . Преимущество вы получите будет примерно не более 5% от исходного пространства файла, в значительной степени равно тому , что HTML синтаксис сжатие / минификация дает вам. Для этого есть инструменты минификации Node.js, доступные через npm.

Что я действительно нашел полезным, так это PHP Linter и _PHP Mess Detector. Я включил оба в библиотеку GitPHPHooks, так что мне не нужно думать или заботиться о ее запуске.

кайзер
источник
Руководство по стилю не игнорируется для Core, но оно не применяется задним числом к ​​старому коду, поскольку делает историю svn / git очень трудной для использования. Официальная политика в том , что новый код должен следовать стиль руководства, но если вы будете форматировать смежный код правильно , то пусть так и будет, но патчи , которые только код формата, или коммитами, только код формата запрещены
Том J Ноуэлл
@TomJNowell И, следовательно, делает руководство по стилю бесполезным :) В любом случае, пожалуйста, внесите изменения и добавьте это в ответ. Это заслуживающая внимания информация.
Кайзер
Я думаю, что я не был очень ясен в своем вопросе - я имею в виду не столько вкладки, сколько пробелы, а больше «Использование пространства» на make.wordpress.org/core/handbook/coding-standards/php/… . Я отредактирую вопрос, чтобы быть более понятным.
Риного
1
@rinogo Я правильно понял с первого раза, отсюда и первый абзац. Кстати, я считаю это более читабельным, а также.
Кайзер
7

Пробелы после точек являются нормальными, например $baz . '-5', этот стиль используется во многих стандартах кодирования для операторов ( y + z).

Это сделано для улучшения читабельности, например, один из них более читабелен, чем другой.

$cow.$dog.$cat.$table.$chocolate.$puddle.$iterator.$stuctureone.$stucturetwo

$cow . $dog . $cat . $table . $chocolate . $puddle . $iterator . $stuctureone . $stucturetwo

Это становится еще более очевидным, когда он окружен другим «кодом».

Что касается пробелов вокруг скобок, ( 1, 2, 3 )я понятия не имею, я полагаю, аргумент также для удобства чтения.

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

Большинство стандартов PHP на самом деле делают обратный вызов .. скобки должны обнимать их содержимое. На самом деле большинство стандартов кодирования для других языков пишут так: (1, 2, 3)так что загадка, почему WP делает это так, немного загадочно.

Вот пример для сравнения из функции WordPress.

введите описание изображения здесь

Увеличенная версия для сравнения: http://i.imgur.com/nTEbV7v.jpg

Я предпочитаю тот, что справа, особенно если смотреть на весь экран кода, но это личное предпочтение.

Уик
источник
спасибо за Ваш ответ! .Интервал имеет смысл для меня, так как .на самом деле просто бинарный оператор, так же , как +и -. Ваши мысли о скобках, «обнимающих» их содержание, - именно поэтому я и задал этот вопрос. Это поведение, наряду с еще более странными правилами, такими как правила для квадратных скобок (WP говорит использовать $foo['bar']и $foo[ $bar ]), именно поэтому я и задал этот вопрос. :)
Риного