Мы проводим рефакторинг очень большой системы и смотрим на многие из написанных нами xQuery и задаемся вопросом, не поможет ли использование и включение xQuery, объявляющего много глобальных переменных.
Но вопрос для архитекторов... они загружаются по ссылке или загружаются только при использовании?
То есть, допустим, у меня есть какой-то xQuery ... _global.xq примерно так:
module namespace g="global/variables";
declare variable $g:col.build := '/db/foo/data/Build';
declare variable $g:doc.langmap := doc(concat($g:col.build,'/','langmap.xml'));
declare variable $g:doc.easymap := doc(concat($g:col.build,'/','easymap.xml'));
declare variable $g:doc.foomap := doc(concat($g:col.build,'/','foomap.xml'));
А потом я ссылаюсь на этов моем xQuery:
import module namespace g='global/variables' at '_global.xq';
Тогда я использую только $g:doc.langmap
в своем xQuery.Оцениваются ли и загружаются ли другие два ($g:doc.easymap
и $g:doc.foomap
) в память, даже если я ими не пользуюсь?
Заполняется ли $g:doc.langmap
на import
или только когда я на самом деле его используюв запросе?Например, если я напишу xQuery, который никогда не ссылается на $g:doc.langmap
, но импортирует этот модуль, он все еще создается в памяти и заполняется или нет?
Мне интересно, потому что, если у меня есть десятки других переменных, объявленных в _global.xq
для использования во многих, многих других xQueries.И конечно я не использую, но только несколько ссылок в каждой.Тогда возникает простой вопрос ... вызывает ли команда import module
их оценку во время импорта или они имеют значения только при использовании?
Я подозреваю, что это будет оченькраткий ответ.