Что, если в структуре репозитория обычно что-то делается для отражения развернутых модулей?

StackOverflow https://stackoverflow.com/questions/55823

Вопрос

Это продолжение вопроса:

Должны ли папки в решении соответствовать пространству имен?

Консенсус по этому вопросу был однозначным «да»:то есть папки == пространства имен, как правило, но не рабски (как того требует 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, если эти пространства имен наиболее важны.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top