https://habrahabr.ru/post/280226/- Программирование
- PHP
- CMS
- 1С-Битрикс
В русскоязычном сегменте Интернета существует такой интересный феномен, как Битрикс.
Для обывателя — это такая серьезная система, «продукт», на котором нужно разрабатывать серьезные проекты: корпоративные порталы, интернет магазины и даже CRM системы. Все очень серьезно, почти как опыты нацистов над инопланетянами (на канале Рен-тв сразу после рекламы).
Для программиста, который прочитал хоть одну книгу про программирование, Битрикс — это так называемый «плохокод», просто-напросто огромное количество PHP файлов, написанных в разном стиле, которые подключаются «инклудом» и что-то там выводят.
Эта статья для обывателя (потребителя). Как правило, такой обыватель, прежде чем сделать выбор CMS, читает статьи под названием «плюсы и минусы Битрикса», которые пишут люди, далекие от программирования. Данная статья написана программистом, потому плюсов тут быть не может.
Итак, минусы:
1. Архитектура
Я испытываю чувство унижения, чувство несправедливости и обмана, когда снова и снова приходится делать какие-то доработки Битрикс сайта.
Дело в том, что умные люди со всего мира пытаются упорядочить, систематизировать и усовершенствовать архитектурные решения в программировании. Из-под пера лучших программистов рождаются «паттерны»: это некие чертежи и схемы участков больших систем, не привязанные к конкретному языку программирования. Это очень ценная информация, опыт предков, данный молодым программистам, чтобы они не теряли время на решение возникающих проблем архитектуры (то самое чувство, когда хочется взять и написать все с нуля).
Битрикс — это полное отсутствие архитектуры. Это просто набор десятков или сотен тысяч файлов с кусками кода, которые никак не связаны между собой. В хороших системах данные крутятся вокруг контроллера, модели и представления, там есть определенные «типы», — это данные, которые наследуют интерфейсы и прочие вещи, благодаря которым программист, не вникая в бизнес-логику конкретного сайта, может понять, как распоряжаться этими данными в каждом новом проекте. Это все опыт десятилетий.
В Битриксе же все написано так называемой «лапшой»: это когда школьник садится за компьютер на уроке информатики и записывает свою мысль от начала и до конца в виде кода в одном файле. Таких школьников в классе 30 и каждый написал свой компонент в своем стиле. Потом встает вопрос, как это все связать в систему? Чтобы понять, откуда берутся те или иные данные в «продукте» 1С Битрикс, нужно делать поиск по коду в файловой системе. Иногда, чтобы все сломать, достаточно поменять местами два компонента, которые обмениваются данными друг с другом через какой-то костыль, который придумал программист (порой общение между компонентами происходит через сессию или другую глобальную переменную).
2. Код
Это просто унизительно, продавать за деньги систему, в которой HTML код перемешан с JS, PHP и CSS. Ниже я приведу функцию «продукта». Чтобы ее поняли и люди, далекие от программирования, еще ниже будет пояснение. Эта функция — метод класса (!!!) ядра (!!!) Битрикса, который вызывается, как статический (!!!) и ему передается 21 аргумент по ссылке (!!!).
function PrepareGetList(
&$arIblockElementFields,
&$arJoinProps,
&$bOnlyCount,
&$bDistinct,
&$arSelectFields,
&$sSelect,
&$arAddSelectFields,
&$arFilter,
&$sWhere,
&$sSectionWhere,
&$arAddWhereFields,
&$arGroupBy,
&$sGroupBy,
&$arOrder,
&$arSqlOrder,
&$arAddOrderByFields,
&$arIBlockFilter,
&$arIBlockMultProps,
&$arIBlockConvProps,
&$arIBlockAllProps,
&$arIBlockNumProps,
&$arIBlockLongProps
)
{
(пересчитал еще раз — 22, по штуке на каждого нового программиста, который дописывал этот метод)
Чем это плохо? Что чувствует программист, видя это? Объясню: вот приходите вы в банк, платите 200 рублей, чтобы вам заполнили платежное поручение (ведь вы занятой человек, у вас нет времени). Вы отдаете деньги, но эти бюрократы заявляют, что чтобы воспользоваться любой услугой банка, в том числе «заполнение поручения», вам нужно заполнить анкету: ИНН, номер паспорта и прочие многоциферные штуки. У вас возникает недоумение: но я же заплатил деньги, чтобы мне было комфортно и удобно, чтобы ничего не надо было заполнять? Но ведь у банка напротив вообще не нужно заполнять никаких поручений, можно просто бесплатно ввести один 4-значный код для проведения платежа!
Банком напротив являются бесплатные фреймворки, а вашим банком — расхваливаемый маркетологами платный Битрикс.
Вы не найдете ни одного программиста, который бы перешел с фреймворков на Битрикс.
3. Обман.
Не хотелось бы писать тут слишком много. Скажу кратко: если вы выбрали 1С Битрикс, чтобы его просто так взять и связать с 1С своего предприятия стандартным модулем — у вас ничего не получится. И много чего другого у вас не получится просто взять и сделать стандартным модулем. У вас все получится, только если вы ничего не будете менять в скачанном архиве, состоящем из тысяч каких-то PHP файлов. Все доработки — это боль, тлен и тысячи трудочасов программиста, который знает программирование на уровне языка разметки и написания сценариев, а не архитектуры.
Заключение
Статья написана программистом и описывает то, что у Битрикса под капотом. Снаружи это действительно удобно и презентабельно. В итоге, это можно охарактеризовать, как продукт хороших маркетологов, которые работают без хороших программистов.
Чтобы статья была менее провокационной, скажу также, что современным бесплатным фреймворкам наоборот, не хватает маркетологов: их продукты имеют высокий порог вхождения и доступны только узкой группе лиц, они никогда не станут народными, как Битрикс.