You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Реализовать декларативное описание библиотеки на основании структуры проекта. Например:
/cmd - определяет "ИсполняемыйФайл".
/pkg (/public) - Классы и модули расположенные определяют публичные объекты аналогично "ОпределяетКласс"/"ОпределяетМодуль"
/bin - регистрирует расположенные внутри аддины.
/internal (/private) - включает в состав пакета, но не публикует классы/модули
/vendor - включает в состав поставляемые библиотеки (текущий аналог oscript-modules)
/docs, /examples, /etc ... - дополнительные файлы библиотеки (документация, примеры, другое)
/tests - содержит тесты проекта. Тесты запускаются в едином с /public+/private контексте.
Для задания псевдонимов реализовать множественную аннотацию @Синоним/@Alias. Например: /cmd/main.os - имя по умолчанию - создается cmd по имени библиотеки. Для
@Alias vrunner
@Alias runner
Или реализовать alias.json в папке с файлом:
{
"main.os": [ "vrunner", "runner" ]
}
Аналогично, для публичных классов/модулей.
Это позволит:
Упростить описание проекта, полностью убрав, или разместив декларации объектов максимально приближенно к их определению
Сделает проекты более структурированными, что повысит их читаемость и сопровождаемость
The text was updated successfully, but these errors were encountered:
Упростить описание проекта, полностью убрав, или разместив декларации объектов максимально приближенно к их определению
надо отметить, что указание ОпределяетКласс и ОпределяетМодуль - полностью опциональное. Если модули и классы лежат по соглашению о структуре каталогов, то загрузчик библиотек из сам загрузит в правильном виде.
Да, у нас и так в целом на основе структуры проекта загрузка ведется. Развивать понятно что можно и дальше. Надо проектировать каждый конкретный кейс: Цель, ЧтобыЧто. @yukon39 возьметесь?
Замечание одно - это слишком высокоуровневый набросок из которого непонятно есть к нему замечания или нет.
Хотелось бы понять что делает каждая папка, как ее обрабатывает opm, что с ней делает автор проекта и т.п. Как это стыкуется с packegdef... Короче сейчас слишком мало информации для понимания предложения
Взято по аналогии со стандартами разработки Go (https://github.com/golang-standards/project-layout)
Реализовать декларативное описание библиотеки на основании структуры проекта. Например:
/cmd
- определяет "ИсполняемыйФайл"./pkg
(/public
) - Классы и модули расположенные определяют публичные объекты аналогично "ОпределяетКласс"/"ОпределяетМодуль"/bin
- регистрирует расположенные внутри аддины./internal
(/private
) - включает в состав пакета, но не публикует классы/модули/vendor
- включает в состав поставляемые библиотеки (текущий аналогoscript-modules
)/docs
,/examples
,/etc
... - дополнительные файлы библиотеки (документация, примеры, другое)/tests
- содержит тесты проекта. Тесты запускаются в едином с/public
+/private
контексте.Для задания псевдонимов реализовать множественную аннотацию
@Синоним/@Alias
. Например:/cmd/main.os
- имя по умолчанию - создается cmd по имени библиотеки. ДляИли реализовать alias.json в папке с файлом:
Аналогично, для публичных классов/модулей.
Это позволит:
The text was updated successfully, but these errors were encountered: