medveddev / bxorm

24 stars 10 forks source link

@deprecated на старом API (CiblockElement) после стабилизации ORM инфоблоков #9

Open north-leshiy opened 4 years ago

north-leshiy commented 4 years ago

Есть предложение на методах CiblockElement делать @deprecated через некоторое время. Чтобы новые разработчики сразу понимали что есть более оптимальный инструмент работы, и сообщество получало меньше legacy кода.

gromdron commented 4 years ago

Есть предложение на методах CiblockElement делать @deprecated через некоторое время.

Сомнительная идея, в том плане что @deprecated следует использовать лишь в том случае, когда метод будет удален, а следуя политики обратной совместимости такого ой как не предвидится.

К тому же, замена будет не равнозначная, так как ORM не реализует следующих возможностей:

Даже более того: реализация некоторых методов прямо противоположна концепции ORM

north-leshiy commented 4 years ago

Многие из этих вещей реализуются новым API через связи и/или события. Некоторые в принципе должны быть вынесены и быть явными.

Платформа должна избавляться от монстров с избыточной зоной ответственности, это антипатерн.

Да, согласен что займет время, пока сделают достойные аналоги на все из перечисленного.

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

Мы 5 лет уже как задепрейтили внутри компании использование GetList и перешли на ORM, в т.ч. для инфоблоков. Живется отлично, и проекты куда как более поддерживаемые чем при использовании старого API.

toxaw commented 3 years ago

Битрикс еще не реализовал для ORM инфоблоков весь функционал, который в CIblockElement, по этому @deprecated на всю API не стоит ставить, но, в документации сказано, что только для добавления, обновление и удаление данное не решено, это значит, что для CIblockElement::GetList официально можно запрещать его использование.