Стиль кода Yii2
10 мая 2013
Много спрашивают про стиль кода Yii2. Почему он такой и почему не 1 в 1 PSR-2.
Несовместимостей с PSR у нас три:
- У нас 5.3, мы не поддерживаем
<?=
в ядре потому как он может быть выключен. PSR-1 его разрешает. - У нас табы, в отличие от PSR-2. У них есть объективный плюс. Их можно отображать как угодно в любимой IDE. Четыре пробела как два не отобразишь. На небольших экранах это особо актуально.
- У нас есть несколько уточнений, которые в PSR-2 не оговариваются.
Комментарии RSS по email OK
Ну пробелы хоть вставили в нужным местах, это ненравилось больше всего, а сейчас вполне ок, я доволен.
А почему не стоит просто следовать стандарту? Я не вижу плохих черт идти по течению. Вы просто привыкли к своему и все, нет тут объективных плюсов, только субъективность.
Костя, пункты 1 и 2 не объективны? Ладно, допускаю, что не у всех есть маленькие экраны, но уж пункт 1 точно объективен.
Sam С 1 согласен. Фреймворк не должен прогибать настройки сервера под себя. 2 пункт притянут за уши. Но хотелось бы услышать, что конкретно в 3 пункт входит?
Кстати да, с пробелами между операторами стало легче.
Все отлично, кроме как всегда ложки дегтя, но это лично для меня, именование неймспейсов.
Костя, пока что вот это:
Стиль норм, мне нравится. Sam, подскажи как с SPL?
Очень рад, что в Yii все таки не пошли на поводу у пробельной истерии и юзают табы, как нормальные люди.
С табами вы конечно прикольнулись. Пойду искать может в NetBeans можно как то настроить различимо от пробелов показ этих магических зверьков. Интересно в своем то коде будет корректным способом использование 4-х пробелов?
Пётр, в нетбинсе можно настроить отображение табов, там есть опция сколько должно быть пробелов в одном табе, и нужно ли по умолчанию превращать табы в пробелы.
Заметил что пока что не весь код в одном стиле (пропущен пробел после if) github.com/yiisoft/yii2/blob/master/yii/renderers/SmartyViewRenderer.php#L66
Так же не понятно зачем использовать magic методы в core github.com/yiisoft/yii2/blob/master/yii/base/Controller.php#L321 лучше использовать сетторы как в yii 1
Пётр, использование полностью своего стиля кода было корректным и в 1.1. SamDark об этом вроде всегда и писал. =)
Max Lapko, спасибо! Поправил. Можешь кстати сразу PR создавать на Гитхабе с такими находками.
Алексей, а что SPL?
Rinat,
yiic.php
?Есть ли в Yii2 где-то использование классов SPL? Ходили слухи, что хотите использовать SplObjectStorage. Я навскидку не нашел, но может есть в задумках.
Алексей, да, конечно:
Iterator
,IteratorAggregate
,Countable
,ArrayAccess
. Ну и автозагрузка классов.Skiller, про это то я в курсе. Я имел ввиду чтобы визуально я мог отличить где таб, а где пробел, не щелкая по коду. Вообще привычка делать все отступы табами потребует немалой вытренировки, а то на автомате поставишь пробелы и все, все перемешано теперь и у других код выглядит весь кривой.
@Амаль
Пробелы — это, скорее, наследние, чем истерия.
Касательно «нормальных людей»: достаточно не смешивать пробелы с табуляцией.
Конечно, с табуляцей не удасться представить код колонками переменной длины, но это, опять-таки, вопрос вкуса.
Пётр, в большинстве DE можно выставить отображение табов/пробелов.
metalguardian, и не в ide тоже. Во всяком случае редакторы типа sublime, notepad++, coda и прочие поддерживают такую настройку.
Опять началась война табов и пробелов. Вообще с табами проще, им можно задать любою длину в IDE. А вот с пробелами так не прокатит, поэтому я за табы!
Sam
Когда допишите Yii2, то уж точно на всех серверах будет PHP5.4 стоять. Не, это не сарказм. Это я надеюсь на благонажедность хостеров ;) Да и поддержка 5.3 скоро закончится. Какой смысл оставаться позади, когда можно двигаться вперед? Там и короткие массивы, и разыменования, и замыкания по людски доделаны...
ИМХО, доводы притянуты за уши. Мне даже на ноуте удобнее работать с пробелами. Так что это субъективный плюс.
Все же многого нехватает для полноценного использования:
keltanas, в 5.4 нет ни одной полезной для фреймворка возможности, которую стоило бы использовать. Поднимать требования лишь из за стиля кода как-то странно.
hcbogdan, никто не запрещает использовать Doctrine. Composer будет. Дебаг-панелька будет.
Sam попробую не согласиться. Ты всегда писал, что для Yii важно иметь лаконичный синтаксис. И 5.4 - как раз ступень к этому. И $this в замыканиях - это большой плюс (если вы их используете, кончено), ибо в стиле 5.3 приходится делать костыль:
и все используемые в замыкании методы делать публичными, что не очень хорошо. Конечно, релиз 5.4 не такой сладкий, как 5.3 или 5.5, но пара вкусностей есть))
Впрочем, допускаю, что изменения и 5.4, и 5.5 могут быть не существенными, хотя и позволяют писать код быстрее.
keltanas, так никто не мешает пользователю поставить 5.4 и использовать новый синтаксис массивов. С замыканиями та же история. Это не значит, что всё это необходимо в ядре.
Sam прав. Сахарные улучшения синтаксиса сами по себе не могут являться поводом повышения требований фреймворка к версии языка.
Sam, MaximAL согласен.
Александр, а что вы используете для проверки всего этого. Я привык к Codesniffer, может у вас есть уже готовый стандарт Yii2 для него?
Пока ничего. Конфиг для Codesniffer сделаем.