想象一下您有一个需要从不同来源导入数据的应用程序的情况。对于这些来源中的每一个都存在一个单独的模型(通常与其他模型无关)。
因此,假设我的软件组件X执行所有导入,命名空间相应为X.在X中我拥有所有不同的解析器和导入器,因此可能有一个用于txt文件,另一个用于xls文件等。
您更喜欢哪种风格:
X.XlsParser
X.XlsModelObject
X.TxtParser
X.TxtModelObject
VS
X.Xls.Parser
X.Xls.ModelObject
X.Txt.Parser
X.Txt.ModelObject
或者我应该将相应源的模型(2-4个实体)放入子命名空间?
X.XlsParser
X.Xls.ModelObjectA
X.Xls.ModelObjectB
X.TxtParser
X.Txt.ModelObjectA
X.Txt.ModelObjectB
我不想让所有那些不相关的类混淆一个命名空间,但是我也不希望遇到问题,比如找出我的代码引用哪个解析器(必须使用它)。
您如何看待
X.Xls.XlsParser
某种工作加倍。
您遵守哪些命名惯例?
答案 0 :(得分:2)
就个人而言,我更喜欢第二种风格(例如X.Xls.Parser
)。我喜欢将单独的组件尽可能分开。
这还取决于这些组件的相关程度。如果它们密切相关,它们应该在同一名称空间中。
答案 1 :(得分:2)
我会选择你的最后一个选择:
Xls.XlsParser
Csv.CsvParser
这类似于ADO.NET约定
SqlClient.SqlConnection
OracleClient.OracleConnection
这样,您的相关类按命名空间分组,但如果导入2个命名空间,则无需通过在代码中显式添加前缀来区分。
答案 2 :(得分:1)
为此,我可能会
X.Excel.Parser
X.Excel.ModelObject
X.Csv.Parser
X.Csv.ModelObject
也许
X.Core.ParserBase
或
X.IParser
等
答案 3 :(得分:0)
我也会投票使用命名空间。这就是它们的用途。
如果您将命令分解为命名空间,Intellisense将更有用。