在 .Net 解决方案中将委托放在哪里
Where to put Delegates in .Net Solution
我有一个 C# .Net 解决方案集合,最初是作为概念验证,现在已经发展到近 15 个不同的项目。我目前正在重写整个产品系列,并试图通过面向未来的组织,尽我所能保持最佳实践。
我已经做了一些研究,但我仍然不清楚在多项目产品中将委托保留在哪个最佳位置,以最大程度地减少将来需要重构的可能性。
我假设普遍的共识是将它们放在对用例有意义的任何地方,但总的来说,我觉得有一种最好的方法来构建解决方案中的所有内容,以最大限度地减少问题,促进积极的模块化,并且易于维护。
在很多情况下,建议随身携带;大概是在 class 文件上方的命名空间中声明的,在我的例子中,它会转换为我的公共库,其中包含强制执行事件的公共接口。我目前在他们自己的文件中有代表,在 'delegate' 命名空间中。我这样做是否存在疏忽,或者我是否使代表的用例过于复杂 - 或者这是否符合当前的使用预期?
我进行了典型的搜索,但没有发现任何可信或实质性的东西;然而,这可能是关键字选择不当的结果。
I would assume the general consensus is that you place them anywhere
that makes sense for the use case, but in general I feel there is a
best way to structure everything in a solution to minimise problems,
promote positive modularity, and ease maintenance.
是的,在一般情况下,您可以随心所欲地放置所有内容。但是,当您在团队中工作时,问题就开始了。在一个团队中,其他人必须理解程序的结构才能有效地创建代码。这意味着一致性,这是最终目标。
所以,这不仅仅是直觉的问题;在我工作过的所有公司中,我都是从编写编码标准开始并在所有地方积极执行的。在此编码标准中,我通常会放置大量 good/bad 实践,涉及线程、静态使用、变量放置/classes 等。
Iirc this link http://se.inf.ethz.ch/old/teaching/ss2007/251-0290-00/project/CSharpCodingStandards.pdf and https://msdn.microsoft.com/en-us/library/ff926074.aspx 会给你一个良好的开端,尽管前者有点过时并且两者都没有真正回答你的问题。但是,它可能有助于您在长期 运行.
中尝试实现的目标
[...] I currently have delegates in
their own file, in a 'delegate' namespace. Is there an oversight I am
making by doing so, or am I overcomplicating the use case for
delegates - or is this inline with current usage expectations?
带有接口的通用库很有意义。接口本质上是 'client' 和 'server' 之间的契约,它是解耦一个软件的重要资产。
此时您必须意识到 'interface' 部分是 功能性 分解,而不是技术分解。换句话说:您需要 'interface' 库这一事实是 合同 的问题,而不是 技术构造 的问题。因此,我不明白为什么要将 classes 放在 'classes' 文件夹中,以及为什么要将代表放在 'delegates' 文件夹中。简而言之,'delegates' 文件夹对我来说没有任何意义。把东西放回原处。
此时,您需要做出决定。 (1) 您可以将委托放在一个文件中,(2) 您可以将委托放在使用它的 class 文件中(我通常将委托用于单一目的),(3) 您可以同时执行这两种操作根据单一/多用途和 (4),您可以将单一用途委托嵌套在 class 中。这基本上意味着您将委托视为函数指针描述,而不是将其视为真正的 'class'。
查看函数分解,您可以争辩说函数指针属于 class,就像方法一样。
如此总结。就我个人而言,我通常会选择 (2) 或 (3) 选项,因为它简洁明了,并且不会像 (4) 那样对 'typing work' 的数量产生影响。选择 (1) 可能会使您的应用程序包含一些用途不大或没有用途的小文件,这会使其他开发人员感到困惑。
我有一个 C# .Net 解决方案集合,最初是作为概念验证,现在已经发展到近 15 个不同的项目。我目前正在重写整个产品系列,并试图通过面向未来的组织,尽我所能保持最佳实践。
我已经做了一些研究,但我仍然不清楚在多项目产品中将委托保留在哪个最佳位置,以最大程度地减少将来需要重构的可能性。
我假设普遍的共识是将它们放在对用例有意义的任何地方,但总的来说,我觉得有一种最好的方法来构建解决方案中的所有内容,以最大限度地减少问题,促进积极的模块化,并且易于维护。
在很多情况下,建议随身携带;大概是在 class 文件上方的命名空间中声明的,在我的例子中,它会转换为我的公共库,其中包含强制执行事件的公共接口。我目前在他们自己的文件中有代表,在 'delegate' 命名空间中。我这样做是否存在疏忽,或者我是否使代表的用例过于复杂 - 或者这是否符合当前的使用预期?
我进行了典型的搜索,但没有发现任何可信或实质性的东西;然而,这可能是关键字选择不当的结果。
I would assume the general consensus is that you place them anywhere that makes sense for the use case, but in general I feel there is a best way to structure everything in a solution to minimise problems, promote positive modularity, and ease maintenance.
是的,在一般情况下,您可以随心所欲地放置所有内容。但是,当您在团队中工作时,问题就开始了。在一个团队中,其他人必须理解程序的结构才能有效地创建代码。这意味着一致性,这是最终目标。
所以,这不仅仅是直觉的问题;在我工作过的所有公司中,我都是从编写编码标准开始并在所有地方积极执行的。在此编码标准中,我通常会放置大量 good/bad 实践,涉及线程、静态使用、变量放置/classes 等。
Iirc this link http://se.inf.ethz.ch/old/teaching/ss2007/251-0290-00/project/CSharpCodingStandards.pdf and https://msdn.microsoft.com/en-us/library/ff926074.aspx 会给你一个良好的开端,尽管前者有点过时并且两者都没有真正回答你的问题。但是,它可能有助于您在长期 运行.
中尝试实现的目标[...] I currently have delegates in their own file, in a 'delegate' namespace. Is there an oversight I am making by doing so, or am I overcomplicating the use case for delegates - or is this inline with current usage expectations?
带有接口的通用库很有意义。接口本质上是 'client' 和 'server' 之间的契约,它是解耦一个软件的重要资产。
此时您必须意识到 'interface' 部分是 功能性 分解,而不是技术分解。换句话说:您需要 'interface' 库这一事实是 合同 的问题,而不是 技术构造 的问题。因此,我不明白为什么要将 classes 放在 'classes' 文件夹中,以及为什么要将代表放在 'delegates' 文件夹中。简而言之,'delegates' 文件夹对我来说没有任何意义。把东西放回原处。
此时,您需要做出决定。 (1) 您可以将委托放在一个文件中,(2) 您可以将委托放在使用它的 class 文件中(我通常将委托用于单一目的),(3) 您可以同时执行这两种操作根据单一/多用途和 (4),您可以将单一用途委托嵌套在 class 中。这基本上意味着您将委托视为函数指针描述,而不是将其视为真正的 'class'。
查看函数分解,您可以争辩说函数指针属于 class,就像方法一样。
如此总结。就我个人而言,我通常会选择 (2) 或 (3) 选项,因为它简洁明了,并且不会像 (4) 那样对 'typing work' 的数量产生影响。选择 (1) 可能会使您的应用程序包含一些用途不大或没有用途的小文件,这会使其他开发人员感到困惑。