C# 何时开始创建派生类/子类

C# 何时开始创建派生类/子类,c#,class,inheritance,properties,C#,Class,Inheritance,Properties,我正在从事一个现有的C#项目,我发现其中一个核心类变得相当大(属性和方法方面) 我正在添加的所有新属性都与类有着非常直接的关系(因此它们在类中是有意义的)——但是我开始认为,最好创建子类,并开始交换使用父类但应该使用子类的实例 所以我的问题是-什么时候一个类变得太“大”?什么时候开始分门别类进入子类等是明智的?我知道这最像是一个上下文的东西,但我也知道这方面的资源(设计方法等)我一生都找不到 另外,考虑到我采用了一个现有的项目,我想做的一件事是整理它,所以我的想法之一是使事情更加模块化,实践关注

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

我正在添加的所有新属性都与类有着非常直接的关系(因此它们在类中是有意义的)——但是我开始认为,最好创建子类,并开始交换使用父类但应该使用子类的实例

所以我的问题是-什么时候一个类变得太“大”?什么时候开始分门别类进入子类等是明智的?我知道这最像是一个上下文的东西,但我也知道这方面的资源(设计方法等)我一生都找不到

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

作为旁注——我不是问父类/子类之间的区别等等——而是问一个类可以有多大(或者是否有任何限制)以及何时开始分支


有什么想法吗?

如果你读了一些关于的内容,然后看看有问题的课程,你可能会发现这个课程正在做很多事情,并且可以分成一些较小的课程


Micheal Feathers写了一本关于你正在完成的任务的好书。

如果你读了一些关于这个问题的书,然后看看这个班,你可能会发现这个班正在做很多事情,可能会被分成一些较小的班


Micheal Feathers写了一本关于您正在执行的任务的好书。

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

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

这是一个完全主观的问题。这是一个“一根绳子有多长”的问题,因为没有正确的答案;看情况,我的2美分。我认为没有充分的理由仅仅为了使类变小而使用继承。基类和派生类之间的差异应该基于功能而不是行号。如果您觉得自己的代码太多,可以使用#region和#endregion将代码组织成逻辑段。如果这有助于您确定,我处理的代码库中的类可以轻松地包含数百个以上的方法。更重要的是类和它们的方法对此有意义object@ZoharPeled认真地人们仍然使用
#地区
@Zoharpled imho#regions,而不是代码气味的解决方案。这是一个完全主观的问题。这是一个“一根绳子有多长”的问题,因为没有正确的答案;看情况,我的2美分。我认为没有充分的理由仅仅为了使类变小而使用继承。基类和派生类之间的差异应该基于功能而不是行号。如果您觉得自己的代码太多,可以使用#region和#endregion将代码组织成逻辑段。如果这有助于您确定,我处理的代码库中的类可以轻松地包含数百个以上的方法。更重要的是类和它们的方法对此有意义object@ZoharPeled认真地人们仍然使用
#地区
@ZoharPeled imho#regions,而不是代码气味的解决方案。我希望你不要介意,我已经在你的答案中强调了我认为最重要的东西。@ZoharPeled-这是一个很好的编辑;我完全同意。我想你会的,这就是为什么我对你的答案投了赞成票:-)我希望你不介意,我已经强调了我认为你答案中最重要的内容。@ZoharPeled-这是一个很好的编辑;我完全同意。我想你会的,这就是为什么我对你的答案投了赞成票:-)