如何为具有 sub-products/modules 的产品命名空间?

How to naming namespaces for product that have sub-products/modules?

我仔细阅读了。是的,非常有帮助!

https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/names-of-namespaces

假设您有以下产品和命名空间

Microsoft.Dynamics.Inventory     is a DLL
Microsoft.Dynamics.Bank          is a DLL

以上每个都有(视图、报告、实用程序等)

Microsoft.Dynamics.Inventory.DLL

我应该去吗?

Microsoft.Dynamics.Inventory.Sales.Reports
Microsoft.Dynamics.Inventory.Sales.Views
Microsoft.Dynamics.Inventory.Sales.Controls

Microsoft.Dynamics.Inventory.Purchase.Reports
Microsoft.Dynamics.Inventory.Purchase.Views
Microsoft.Dynamics.Inventory.Purchase.Controls

去那个? (当前使用)

Microsoft.Dynamics.Inventory.Reports.Sales
Microsoft.Dynamics.Inventory.Views.Sales
Microsoft.Dynamics.Inventory.Controls.Sales

Microsoft.Dynamics.Inventory.Reports.Purchase
Microsoft.Dynamics.Inventory.Views.Purchase
Microsoft.Dynamics.Inventory.Controls.Purchase

当你写 using directives 时,第一个看起来不错。但是文件夹结构会很糟糕。

  1. 如果我使用第二种方法,我会得到非常好的结构化文件夹See Image
  2. 如果我使用第一种方法,每个子模块都有视图、报告、控件(重复)

请不要基于意见。其实我担心结构不好以后会变得更糟。

我无法想象 System.Data.SqlClient 的例子不是 System.SqlClient.Data 好吗?

通常

System.Data.Common can used bellow
System.Data.OleDb
System.Data.SqlClient
System.Data.AnyProvider

如何将该结构应用于我上面的示例?

备注

  1. 销售可能没有报告(那么第一种方法不好吗?)
  2. 购买可能没有控制(所以第一种方法不好吗?)

我看到在 MVC 架构中他们使用第二种方法。我不确定。

https://github.com/cruzerM/erp-bank-net/tree/master/ERP_BANK.Web/Views

那么我应该采用第二种方法吗?

如果 类 中的所有对象都相似,请尝试这种方法

Microsoft.Dynamics.Inventory.Reports
Microsoft.Dynamics.Inventory.Views
Microsoft.Dynamics.Inventory.Controls

在这些对象中,使用一种叫做 TransactionType 的东西来指示它是购买还是销售。