2017-02-11 2 views
3

PSR-2 Coding Style Guide выбирает 4-пространственный отступ по вкладкам. Я всегда считал, что вкладки против пространства - это всего лишь вопрос предпочтения, и это впечатление от меня, похоже, подтверждается тем фактом, что даже члены проекта PSR-2 survey были далеко не единодушны. Тем не менее, раздел indenting предоставляет следующие обоснования:Пояснения к правилам отступов PSR-2

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

Моего два сомнения:

  1. ли заметка о файлах изменений, исправлений, историях и аннотации только ограниченных к смешанным углублениям (то, что не нуждается в дальнейшем объяснении) или есть какие-то конкретные проблемы, которые могут (надлежащим образом) Только табуляция отступы?

  2. Что означает «мелкозернистая подзадача для межстрочного выравнивания»? Есть ли какая-либо конкретная ситуация, когда вам может понадобиться вставить половину отступа? (Примеры особенно приветствуются.)


Я понимаю, что вы не просто читать «вкладки/пространств» и спешить, чтобы закрыть как мнение на основании. Я прошу дать разъяснения по двум очень конкретным вопросам в PSR-2, которые могли бы использовать совершенно объективные ответы. Это ни в коем случае вопрос о том, что лучше.

+2

У меня нет ответа на ваш вопрос, но посмотрите на https://github.com/php-fig-rectified/fig-rectified-standards/blob/master/PSR-2- R-coding-style-guide.md для фиксированной версии –

ответ

2

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

Это то, что на самом деле произошло со мной в случае, когда клиент был очень обеспокоен безопасностью (правительством) и имел гораздо больше правил для подражания. Поэтому давайте не будем обсуждать причины, по которым ssh + vi может быть хорошим или плохим выбором. Иногда это не выбор, а наложение, которое вы должны соблюдать, если хотите эту работу.

За пределами редактора git, diff и grep все не всегда соответствуют вкладкам. Например, если у вас есть этот код:

$em = $this->getEntityManager(); 
// more code... 

if ($some_bit) 
{ 
    $em = $this->getEntityManager(); 
    // more code... 
} 

Теперь вы хотите grep линий на основе отступа вы можете сделать:

grep -nri " $em" 
grep -nri "  $em" 

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

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

Для полуиндексации я могу показать вам этот код, который неправильно выровнен, но каким-то эстетически приятным. Я понятия не имею, если эстетика должна превзойти правильный отступ.

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

$qb->andWhere("a = :a") 
    ->andWhere("b = :b") 
    ->setParameter("a", $a) 
    ->setParameter("b", $b); 

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

+0

Я вставлял скрытый код в Stack Overflow много раз без проблем, но пример оболочки Unix - это то, о чем я не думал. Флюктуационный фрагмент интерфейса также полезен (я лично переместил первый вызов метода на новую строку, но я понимаю суть). Спасибо! –

+0

Да, вставка вкладок в SO возможна, но когда я привык к табуляции, редактор SO отталкивает меня, потому что он работает не так, как ожидалось. Напротив, когда я привык к пробелам, у меня нет этой проблемы, но я должен использовать пространство в четыре раза, что тоже раздражает. Я переключаюсь, будучи «использован» в любом случае в зависимости от того, что я написал за последние пару дней или около того, но на работе это 100% пробелов, все время. – pid

+0

Еще одна вещь, которая приходит мне на ум прямо сейчас - это многоплатформенный код. Как и CRLF/LF раздражение, у вас может быть предпочтительная IDE на одной платформе, а другая IDE - на другой. При переключении между ними это может быть немного неинтуитивным. Другим примером является это. У меня есть ноутбук, где я установил Linux Mint, потому что он имеет очень низкую производительность. Все, что я делаю, это код в 'vi' +' git'. Мой рабочий стол - это Windows 10 с Visual Studio. Вы можете себе представить, насколько отличаются эти IDE.Держите код в чистоте не сложно, но это требует небольшого внимания. Просто использование пробелов иногда является более легким выбором. – pid

0

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

Git по умолчанию отображает 8 пробелов для вкладки, ниже - 1 строка табуляции, за которой следует 4 строки пробела. 8 пробелов огромны для diff, учитывая, что терминалы не очень большие. хотя это можно было бы скорректировать.

tab v space

Что делает "мелкозернистый суб-отступы для выравнивания между линией" означают точно? Есть ли какая-либо конкретная ситуация, когда вам понадобится вставить половину отступа? (Примеры особенно приветствуются.)

Не уверен, что это то, о чем они думали, но выравнивая знак «=» или «=>» при объединении значений, пробелы предоставляют точное число, в зависимости от вашего значения ширина вкладок, вкладки выглядят плохо. т.е. меньший сдвиг приведет к тому, что значения не выстроятся в линию, большая ширина сдвига будет разрываться на нескольких вкладках. Пространства выглядят одинаково во всех средах.

+0

Извините, если я не объясню правильно. У вашего diff есть смешанные отступы (первая строка использует вкладки, вторая строка использует пробелы), мой вопрос касался только отступов табуляции. Что касается второго момента, просто чтобы убедиться, что я понял, вы на самом деле ссылаетесь на выравнивание, а не на отступ, не так ли? –

Смежные вопросы