我有许多以名称空间类型在
下命名的项目
添加新的子命名空间时,如何判断是否为
•在项目中创建新文件夹
- 或 -
•在解决方案中创建新项目?
我应该为每种情况考虑哪些不利/优势?
答案 0 :(得分:5)
您必须问自己的问题是:这两段代码在逻辑上是否合并为一个部署单元?如果是这样,请将它们保存在同一个项目中。如果没有,请将它们分开。
说实话,我很少为“嵌套”命名空间创建一个新项目 - 它似乎通常不会那样工作。特别要考虑是否要从“外部”命名空间访问“嵌套”命名空间,反之亦然 - 如果它们合理地相互引用,那么它们应该在同一个项目中。
答案 1 :(得分:1)
在这个问题上加上我的2美分,用一些“在那里 - 完成那个”体验扩展Jon的答案:
我确实在几个解决方案中使用了至少两个由命名空间命名的项目(好吧,排序)。例如,在MyApp解决方案上工作时,我有MyApp.Web
和MyApp.Web.Controls
。
或:MyApp.Service
,MyApp.Core
,MyApp.Core.Entities
等等。非常着名的命名约定,根命名空间就像MyCompany.MyApp.Service etc...
<强>优势强>:
- 在团队中工作时发现它非常有用,突出显示应用程序模块之间的依赖关系。如果您的Web.Controls
模块(它只是一个示例,请不要选择它)在Web UI中共享,您通常不希望自定义控件中的应用程序特定代码。保持“子/嵌套”模块独立(由主项目引用)强制执行此操作。
- 至少考虑它可能会帮助您创建更好的项目结构。哪个命名空间在一个单独的项目中,哪个没有?单单回答这个问题就足够了。
<强>缺点强>: - 很容易获得“触发快乐”并创建一百个项目,而不是制作适当的文件夹/命名空间。
尽管如此,通常倾向于创建文件夹而不是单独的项目,除非它真的是一个“子模块”。