О наболевшем и Битриксе

Навеяно битриксом, сторонними модулями и шаблонами.


DISCLAIMER:

Возможно, после этого вброса меня начнут обвинять в лицемерии, поскольку на tominoff.ru я рекомендую начинающим бизнесменам брать именно битрикс.

Давайте договоримся — тут, я пишу с позиции разработчика, на tominoff я, как правило, пишу с позиции бизнеса/юзера.

Как бы ни был плох битрикс для разработчика, он чертовски хорош для бизнеса и с этим сложно поспорить.


 

Codestyle

Что такое codestyle? Это свод правил, согласно которому, разработчики должны писать свой код, в рамках проекта/компании/etc. Я до конца не уверен — есть–ли у битрикса свой стайлгайд, поскольку натыкаюсь на адские расхождения в стилях написания кода, даже в стандартных модулях.

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

Т.е. если мы имеем массив в переменной, то в битриксе переменная будет обладать префиксом ar:

<?
  $arSettings = array(
    'PROPERTY_ONE' => 'VALUE'
  );
?>

Кстати, ещё в битриксе прижилось использование капса при описании названий индексов хэшмассивов. И использование ‘Y’/’N’ вместо true/false.

 

Вроде бы хорошо, есть некие правила именования переменных, однако, на этом, видимо, и заканчивается styleguide. Взгляните на эти два куска кода:

Это шаблоны встроенных в битрикс компонент. У меня к этим шаблонам только один вопрос: почему в первом используется неудобная скобочная нотация, а во втором происходит мешанина из функциональных тегов и опять же неудобной скобочной нотации?

Это реально сильно вымораживает. Ещё сильнее вымораживают вымученные попытки битрикса предоставлять максимально универсальные компоненты. Это реально жесть — достаточно посмотреть в исходник шаблонов каталога.

Шаблоны у него мегагромадные, с кучей логики (скобкастайл), кучей циклов, кучей вложенных компонент. Чтобы разобраться с этим месивом у вас уйдёт куча времени и нервов, а всё это нужно лишь для того, чтобы предоставить в настройках компонента возможность вывода тех или иных частей и определить порядок вывода. У меня ещё один вопрос к команде битрикса — почему, черт возьми нельзя сделать шаблоны для разработчиков, без всей этой требухи?

 

Javascript

Javascript api в битриксе это вообще отдельная песня. Они зачем–то реализовали кучу ненужного функционала, аналогичного jquery, но менее удобного. Их javascript модули очень плохо описаны в документации. 

При этом есть странная штука — BX.message, которая казалось бы нужна для реализации i18n на клиенте, однако используется ещё и как хранилище некоторых битриксовых системных переменных.

При этом, в списке почему–то отсутствует (раз уж функция многопрофильная) SITE_TEMPLATE_PATH, которая тоже могла бы очень пригодиться.

 

*   *   *

Тут нужно понимать — Bitrix – продукт не бесплатный. Т.е. если бы я увидел такое в WP, то вопросов бы как–бы не было, но тут они просят нормальные деньги за такие подлянки.

*   *   *

 

Marketplace

И однако, всё это полная фигня по сравнению с пользовательскими модулями в маркетплейсе.

Наверное, почти в каждом компоненте присутствует такая строчка:

<?if($arParams["INCLUDE_JQUERY"]!="N"):?><script type="text/javascript" src="<?=$arResult["TEMPLATE_DIR"];?>/js/jquery-1.9.js"></script>
<?endif;?>

и это довольно ужасно! Почему бы не использовать стандартное API Битрикса для подключения таких штук, вместо использования <script>?

Причём такая ересь встречается даже в стандартных компонентах системы!

 

Более острый вопрос — отношение к javascript. Я пробовал много разных модулей из маркетплейса, и у меня создалось такое впечатление, что многих авторов вообще не волнует javascript.

Самое удивительное, на маркетплейсе есть модули, не обновлявшиеся более 4-х лет, однако до сих пор на них пишут отзывы и выполняют установки. Самая стандартная проблема таких модулей даже не в PHP (битрикс, видимо перейдёт полностью на D7 только с выходом PHP 12), проблема в пресловутом Javascript!

Поскольку javascript вообще многое прощает, ошибки в работе вы рискуете заметить не сразу. Причём ошибки могут появляться по разным причинам.

Об оптимизации JS даже говорить не хочется, этим почти никто не занимается (разве что, возможно, некоторые вендоры маркетплейса с высокими ценниками), это очень печально.

Многие компоненты используют устаревшие несколько лет назад функции из того же jquery, самый частый кейс — .live и .die для динамичных компонентов.

Вторая немаловажная проблема Javascript в компонентах битрикс — использование глобальных переменных. Ясен перец, что иногда без них не обойтись, но ведь есть у битрикса свой неймспейс (window.BX), почему бы не пихать свой глобальный код туда?

Ещё лучше вообще избегать глобальных переменных и функций, для этого есть куча способов!

 

Финалочка

В общем, как разработчик, я, мягко говоря, совершенно не в восторге от коммерческой CMS Битрикс. Реально, есть крутые и уникальные идеи и концепции в этой системе, но описанные выше недостатки очень мешают жить.

Отдельная проблема этой системы — bitrix разработчики.

К сожалению, мне не доводилось ещё получать в наследство проект на битриксе, где не было бы аццких косяков (самое простое — изменяют шаблоны компонентов прямо в компонентах), конечно, по своему опыту весь рынок судить нельзя, но пока что проекты на битриксе попадались гораздо худшего качества, чем допустим на opencart (а там то тоже всё сильно не в порядке, мягко говоря).

А всё это потому, что у CMS Bitrix достаточно низкий порог вхождения, что порождает массу низкокачественных специалистов. 

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

 


А как ты относишься к CMS Bitrix?


 

Комментарии

comments powered by Disqus
Яндекс.Метрика