О это страшное слово "паттерны"! Поговорим о том, какие они бывают, как их можно реализовать и нужны ли они вообще в мире 1С. Донаты: donate.stream/...
Чтобы "чистому 1С-нику" изучать паттерны, нужно сначала посмотреть на варианты архитектур не 1сных решений, на других языках. Видео может оказаться непонятным для такого человека. (Ап чем они вообще говорят?) И вот тут, как ни странно, на помощь приходит совсем не батники/шелы/баши/питоны/джавы/шарпы.... (до которых 1снику длинен путь). На помощь приходит односкрип и готовые библиотеки/решения! Именно благодаря оскрипту и примененным в нем интересным финтам/приемам я (а может и не только я) теперь узнал, что это именуется паттернами. Благодаря сообществу оскрипта, через примеры впитывается и теория. В 1с такого не встретишь!) Поэтому участникам стрима и сообществу огромное спасибо! А злому бобру и всем контрибьютерам оскрипт-corp индивидуальные респектища за вот такой витиеватый вклад в ликбез желтых программистов!
Функция ПолезнаяНагрузка (1:44:07) - нарушает первый принцип SOLID, имхо она должна занимается только полезной нагрузкой, а не дополнительным делегированием выполнения по цепочке. Само делегирование должно управляться управляющим объектом.
При этом классическая версия паттерна выглядит именно так: refactoring.guru/ru/design-patterns/chain-of-responsibility Но мне тоже больше нравится вариант, когда вызов следующего обработчика идёт в промежуточном инфра-слое. Но это уже не "цепочка" :)
Как не извращайся, но на 1С невозможно реализовать нормальную, легко поддерживаемую архитектуру просто потому, что у разработчика связаны руки очень скромными возможностями языка и жесткими ограничениями платформы.
О - это касается проектирования, а не расширения. То есть изначально неправильная трактовка. А то что было сказано на 19:34 - это как раз относится к L.
А расскажите как нибудь про AST деревья. Часто бывает нужно найти все запросы которые косвенно зависят от текущего (т.е. у меня в 1 запросе формируется ВТ1, затем другой запрос (не важно в этом пакете или другом) читает эту ВТ добавляет своими данными, помещает в другую ВТ2, третий запрос использует ВТ2 и.т.п. в итоге у меня между ВТ1 и ВТ2 прямая связь, а между ВТ1 и запрос 3 косвенная. Причем иногда нужно посмотреть на какие запросы влияет ВТ1 а иногда какие запросы влияют на Запрос3. Если я правильно понимают то AST дервья могут построить стэк вызовов и операторов (помещение в ВТ, чтение из ВТ)
рассказывали на стримах по BSL LS. Но чистого AST/дерева разбора тут не хватит, нужна более сложная семантическая модель и вероятно data flow analysis. Надеюсь, что когда-нибудь BSL LS дорастет до такого уровня.