【问题标题】:Partial Classes and hundred members [closed]部分班级和一百名成员[关闭]
【发布时间】:2013-08-16 19:57:10
【问题描述】:

除了拥有一百个成员的类的非典型原因(例如访问一百个对象的 DAO 模式)之外,最好的方法是什么:只有一个包含所有成员的类,或者有数百个部分类,每个类都有一个成员?

每个成员的部分类看起来不错,因为它有助于构建插入和删除成员的自动化解决方案,只需创建或删除文件(类)。

.Net 中的 C# 或其他东西是否限制了部分类的数量?假设在运行时这两种选择是相同的,那么在设计时或编译时其他性能或资源消耗情况如何?

详细说明示例: 具有数百个需要从 DaoFactory(DAO 模式)访问的对象的数据库通常对数据库中的每个对象都有一个成员。我们不是在讨论这背后的业务,为什么这个系统有以及它是如何工作的,但我们有一个情况,所有对象都需要通过 DaoFactory 来“暴露”。当然,多个 DaoFactories 对对象进行分组可以最小化其大小(成员数量),但前提是划分考虑了它们之间所有可能的关系,因此将所有可能的数据库事务组合在它们之间进行分组。

所以,假设我们不能分割这个 DaoFactory,我们有一个有数百个成员的类,部分类是我要求的替代方案,有一种工具可以维护它,只需创建或删除部分类给每个成员。

【问题讨论】:

  • 数百个部分类,每个类都有一个成员你不会是认真的,对吧?
  • 老实说,我认为这是一个完全有效的代码生成问题。如果这段代码是手工维护的,我也会有同样的反对意见,@Will,但机器生成的代码完全不同。
  • 我无法想象 100 个人都需要同时换一个班级
  • @cdhowie:为什么工具生成的代码需要不止一个部分?如果您的代码生成速度如此之慢,以至于不允许重新生成单个方法,那么您做错了。即使在这种情况下,您也可以简单地查看 gen 文件以了解您想要更改的内容并进行更改。无需创建一堆无用的文件。
  • 请看“详细样本”

标签: c# partial-classes


【解决方案1】:

这不是部分类的用途。当您不想接触主类中的代码时,应该使用部分类。 EF 生成的代码就是一个很好的例子。

或者,当几个开发人员想要开发同一个大类时。他们每个人都将课程的一部分发展为部分课程。

但是,你不会仅仅因为类很大就将一个类分成部分类。

【讨论】:

  • 更不用说一个巨大的类是一种代码气味,表明可能缺乏好的对象并且违反了单一责任原则。一个类有 100 个 [public?!] 成员,很可能需要重构为一堆更小、更简单的类。
  • @NicholasCarey:是的。但气味并不意味着某些东西真的很烂(请看详细样本)
【解决方案2】:

一个有一百个很可能不相关的成员的类有什么意义。

如果您要生成代码,看起来您可能会从 它促进自动化解决方案的构建...... 进行数据访问,创建一个或多个抽象类,可能(可能,实际上)实现所需通用功能的泛型。

让您的代码生成器构建合适的具体实例。

这种方法也适用于手动构建。

【讨论】:

  • 请看我的编辑。
猜你喜欢
  • 1970-01-01
  • 2011-08-09
  • 1970-01-01
  • 1970-01-01
  • 2019-08-28
  • 1970-01-01
  • 1970-01-01
  • 2020-01-06
  • 1970-01-01
相关资源
最近更新 更多