Всегда есть дилемма расширять ли базовый прототип. С одной стороны в академических кругах это возбраняется, с другой стороны без расширения базового прототипа не получится сделать каскадную выбору данных:
Каждый раз для простых выборок писать callback функцию только код марать. Безусловно если нужно элементы отфильтровать каким-нибудь хитрым макаром, то filter это наш выбор.
1. насчёт «быдлокода» — в голову не приходила мысль, что это код написан таким образом в силу определённых причин? Например, некоторые куски кода можно, заменить стандартной php функцией, но только при определённых настройках сервера и при работе под mbstring'ом эта самая функция работает не правильно. И поэтому её приходится заменять «странным кодом», только он выглядит странным для прохожего, а как только вникаешь в причину его появления, понимаешь какая огромная работа была проделана.
2. размазывать информацию о пользователях по 15ти инфоблокам это жёстко! Опять же, для меня как для прохожего, который не знает всех ваших внутренних нюансов и бизнес-процессов, это как раз кажется быдлокодом. Хотя есть вероятность что такой подход, в силу каких то причин в вашем случае оправдан.х.з.
3. когда кол-во ИБ переваливает за 50, всегда стараюсь делать разумную избыточность, тогда данные можно выбирать без джойнов.
4. при больших объёмах таблиц, вычисления можно размазывать по времени — например некоторые значения можно рассчитывать при изменении элементов ИБ, это лучше чем пытаться за один проход всё сразу просчитать.
p.s. прошу прощения если вам покажется, что я пытаюсь объяснить детские истины.
Чёрт, что я пишу, если у вас есть некэшируемые(на сто тысяч лет) запросы с 15тью джойнами, то у вас просто напросто криво спроектирована структура инфоблоков, других вариантов нет.
Да и код такой:
читать приятнее, чем вот такой:
и
2. размазывать информацию о пользователях по 15ти инфоблокам это жёстко! Опять же, для меня как для прохожего, который не знает всех ваших внутренних нюансов и бизнес-процессов, это как раз кажется быдлокодом. Хотя есть вероятность что такой подход, в силу каких то причин в вашем случае оправдан.х.з.
3. когда кол-во ИБ переваливает за 50, всегда стараюсь делать разумную избыточность, тогда данные можно выбирать без джойнов.
4. при больших объёмах таблиц, вычисления можно размазывать по времени — например некоторые значения можно рассчитывать при изменении элементов ИБ, это лучше чем пытаться за один проход всё сразу просчитать.
p.s. прошу прощения если вам покажется, что я пытаюсь объяснить детские истины.
p.s. не хвастовства ради — за плечами больше 30 проектов именно на битриксе.