Модульность в 1С – как следовать принципам DRY в реалиях 1С: Предприятие 8.3
Принцип DRY – Don't repeat yourself (не повторяйся) – один из классических принципов программирования. Краеугольным камнем реализации этого принципа является модульная архитектура, которую можно реализовать в 1С с помощью расширений. Но экосистемы модулей общего назначения, сравнимой с существующими в других языках, в 1С пока что нет. О том, как спроектировать архитектуру таких модулей и управлять ими с помощью менеджера пакетов, на митапе «Путь к идеальному коду» рассказал технический директор компании «А1» Арсений Геращенко.
Комментарии
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
пакетов в 1С пока не существует
Может уже пора написать? :)
Я вижу реализацию идеи менеджера пакетов в там виде: в проекте создается файл описания зависимостей с прямыми ссылками на git репозитарии. Для сборки cf запускается скрипт на 1Script, который скачивает из соответствующих реп заданную версию сборки (файлы cf), затем мержит их в один cf вместе со сборкой текущего проекта.
При этом все проекты разрабатываются в формете расширений. При сборке они преобразуются в cf, чтобы затем сделать общий мерж.
Использование префиксов неудобно тем, что они "засоряют" код.
Представьте себе конфигурацию, в которой модули, написанные разными разработчиками будут с разными префиксами. Тогда при написании кода недостаточно будет помнить имя модуля, придется еще вспоминать его префикс. И если имя должно соответствовать смыслу функциональности, то префиск никакой полезной смысловой нагрузки не несет.
С другой стороны для разделения функциональности на уровне пакетов, как это устроено в других языках, использование префиксов - вариант для разработки на 1С с аналогичным разделением.
Тут я думаю, можно было бы написать линковщик на том же 1Script, который бы при сборке умел заменять имена модулей в одном проекте на новые с префиксом. Внутренние ссылки тоже нужно будет менять как при рефакторинге. Метаданные помимо общих модулей можно оставить без рефакторинга. Для метаданных как данных вполне можно придумать адекватное уникальное имя и без префиксов, а если так не получается, то значит вероятно требуется пересмотреть модель данных.
Представьте себе конфигурацию, в которой модули, написанные разными разработчиками будут с разными префиксами. Тогда при написании кода недостаточно будет помнить имя модуля, придется еще вспоминать его префикс. И если имя должно соответствовать смыслу функциональности, то префиск никакой полезной смысловой нагрузки не несет.
С другой стороны для разделения функциональности на уровне пакетов, как это устроено в других языках, использование префиксов - вариант для разработки на 1С с аналогичным разделением.
Тут я думаю, можно было бы написать линковщик на том же 1Script, который бы при сборке умел заменять имена модулей в одном проекте на новые с префиксом. Внутренние ссылки тоже нужно будет менять как при рефакторинге. Метаданные помимо общих модулей можно оставить без рефакторинга. Для метаданных как данных вполне можно придумать адекватное уникальное имя и без префиксов, а если так не получается, то значит вероятно требуется пересмотреть модель данных.