【问题标题】:When to start making derived/children classes [closed]何时开始制作派生/子类[关闭]
【发布时间】:2015-05-07 07:21:16
【问题描述】:

我正在处理一个现有的 C# 项目,我发现其中一个核心类变得相当大(属性和方法方面)。

我添加的所有新属性都与类几乎直接相关(因此它们在其中是有意义的) - 但是我开始认为宁愿创建子类并开始交换实例可能是明智的使用父类但应该使用子类的地方。

所以我的问题是 - 什么时候班级变得过于“大”?什么时候开始分支到子类等是明智的?我知道这很像上下文相关的东西,但我也知道这方面的资源(设计方法等)是我一生都找不到的。

另外 - 考虑到我采用了一个现有项目,我想做的一件事就是整理它,所以我的想法之一是让事情更加模块化并实践关注点分离等。

只是作为旁注-我不是在问父/子类之间的区别等等-而是更多地沿着类可以有多大(或者是否有任何限制) all) 以及何时开始分支.

有什么想法吗?

【问题讨论】:

  • 这是一个完全主观的问题。这是一个“一根绳子有多长”的问题,没有正确答案;视情况而定。
  • 我的 2 美分。我认为没有充分的理由使用继承来使类变小。基类和派生类之间的区别应该基于功能而不是行号。如果你觉得你有太多的代码,使用#region和#endregion将你的代码组织成逻辑段,
  • 如果它可以帮助您做出决定,我工作的代码库中的类很容易包含数百种方法。更重要的是类及其方法对该对象有意义
  • @ZoharPeled,说真的。人们仍在使用#regions??!!???
  • @ZoharPeled imho #regions are part of the problem,不是解决代码异味的方法。

标签: c# class inheritance properties


【解决方案1】:

如果您阅读Single Responsibility Principle,然后查看相关课程,您可能会发现该课程正在做很多事情,并且可以分解为一些较小的课程。

Micheal Feathers 的《Working Effectively With Legacy Code》是一本关于您正在执行的任务的好书。

【讨论】:

    【解决方案2】:

    通过实验,在我们公司内部,我们已经达到了 C# 源文件的 300 行限制。这是通过 StyleCop 扩展严格执行的(超过 300 行的文件是编译错误)。 这个 300 行的限制是完全任意的:我们已经决定任何更大的东西都太大了,但这肯定不是“一个类在什么时候变得太大”的“正确”答案?”你需要自己试验并达到自己的极限。

    【讨论】:

    • 希望你不要介意,我已经在你的回答中强调了我认为最重要的东西。
    • @ZoharPeled - 这是一个很好的编辑;我完全同意。
    • 我以为你会,这就是为什么我赞成你的答案:-)
    猜你喜欢
    • 2020-11-29
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 2013-10-05
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多