Что, если что-нибудь обычно делается в структуре хранилища, чтобы отражать развернутые модули? - PullRequest
0 голосов
/ 11 сентября 2008

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

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

Консенсус по этому вопросу был квалифицированным "да": то есть, папки == пространства имен, как правило, но не рабски (как требует java).

Действительно, так я настраиваю проекты.

Но настройка управления исходным кодом заставила меня задуматься о текущей структуре папок. Как и в .NET Framework, пространства имен в моем проекте не всегда соответствуют развернутым блокам один на один. Скажем, у вас есть

lib             -> lib.dll
lib.data        -> lib.dll
lib.ecom        -> lib.ecom.dll
lib.ecom.paypal -> lib.ecom.paypal.dll

Другими словами, дочерние пространства имен могут или не могут поставляться с родителем.

Так сгруппированы ли пространства имен, которые развертываются вместе, каким-либо образом?

Кстати, я не использую VS или NAnt - просто старые добрые сборки.

1 Ответ

1 голос
/ 11 сентября 2008

Я обычно не думаю об этом и просто делаю "то, что чувствую правильно", но обычно я в конечном итоге использую имена, которые вполне соответствуют следующей стратегии.

Я буду использовать самое большое общее пространство имен в дереве для имени .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, если эти пространства имен являются наиболее важными.

...