Что, если в структуре репозитория обычно что-то делается для отражения развернутых модулей?
-
09-06-2019 - |
Вопрос
Это продолжение вопроса:
Должны ли папки в решении соответствовать пространству имен?
Консенсус по этому вопросу был однозначным «да»:то есть папки == пространства имен, как правило, но не рабски (как того требует Java).
Действительно, именно так я настраиваю проекты.
Но настройка системы контроля версий заставила меня задуматься о текущей структуре папок.Как и в случае с .NET Framework, пространства имен в моем проекте не всегда однозначно соответствуют развернутым модулям.Скажи, что у тебя есть
lib -> lib.dll lib.data -> lib.dll lib.ecom -> lib.ecom.dll lib.ecom.paypal -> lib.ecom.paypal.dll
Другими словами, дочерние пространства имен могут поставляться вместе с родительским, а могут и не поставляться.
Итак, сгруппированы ли каким-либо образом пространства имен, которые развертываются вместе?
Кстати, я не использую VS или NAnt — просто старые добрые пакеты сборки.
Решение
Обычно я особо об этом не думаю и просто делаю «то, что считаю правильным», но обычно в конечном итоге я использую имена, которые довольно хорошо соответствуют следующей стратегии.
Я буду использовать самое общее пространство имен в дереве для имени .dll, как вы, кажется, делаете;
с lib и lib.data это lib, поэтому dll называется lib.В случае с lib.ecom и lib.ecom.paypal это lib.ecom, поэтому dll называется ecom.
В некоторых случаях вам нужно подумать о вещах немного больше, например, у нас есть следующие пространства имен (предупреждение, появится упрощенный пример), и мы хотим сгруппировать их в две библиотеки dll.
myapp.view
myapp.presentation
myapp.model
myapp.dataaccess
мы не можем использовать myapp, потому что тогда у нас будет две сборки myapp.В этом случае я использую имя пространства имен, которое наиболее подходит.Первое можно назвать myapp.presentation, а второе — myapp.model, если эти пространства имен наиболее важны.