我认为课程太长了。我真的不知道什么是太久意味着它只有2500行代码。但是,所有方法都使用至少一个或多个变量,因此我认为它非常有凝聚力。我想仍然把这个类分成几个较小的类,它们会使用三个相同的变量。这是一个糟糕的设计,还是代表一种模式?
class MyClass
{
...
MyVar1 myVar1;
MyVar2 myVar2;
public void DoStuff()
{
...
MyPart1 myPart1 = new MyPart1(this,myVar1,myVar2);
myPart1.DoStuff();
MyPart2 myPart2 = new MyPart2(this,myVar1,myVar2);
myPart2.DoStuff();
}
}
答案 0 :(得分:7)
你通常不会说2500行代码对于一个类来说太多了。
然而,你可以说一个用于10种不同动作的类是非常单一的。这里的一些人说每个类应该只有一个功能。这些人会阅读" 10"作为二元...
现在,如果你没有机会将你的班级分成两半,可能首先要拆掉小功能部件。通过这种方式,您可以更好地了解对您的课程至关重要的内容。功能。
从查看方法开始:如果您的类有多个基本属于同一范围的方法(例如XML-I / O或类似播放/暂停/停止/重置功能集),您可以创建一个子类这些。
如果你的所有方法都相同(即与上述方法相反),我说你的课程不是太大。
最重要的是,您不会在代码中失去方向。尝试构建您的课程并按照最合适的方式订购您的方法。并且不要忘记评论这个订单,这样你就可以轻松地进入它......
答案 1 :(得分:4)
思考“单一责任”(SR)。我敢打赌,一个拥有2500行代码的类至少可以完成20种不同的东西,可以很容易地分开。
首先,所有私有方法通常都是等待爆发的新SR类。 第二,变量被用在很多地方,并不意味着,其他人(另一个类)无法持有并处理它。 第三,像这样的大班必须几乎无法测试。 SR类通常很容易。
所以我唯一可以推荐它开始蚕食你的怪物类,让几十个相当小的一击奇迹看到白昼:-)
此致 的Morten
答案 2 :(得分:3)
除非你分开的部分有一个容易定义的,明智的单一责任,否则我不会那样分开。如果您只能在一行中描述细分类,并且该行不是“用于管理var1和var2”,那么您可能会遇到一些问题。
2500行并不是那么大 - 有时它只需要那么清晰和有凝聚力的代码来完成某些事情。
编辑:有些方法可以让你发现课堂上有些东西可疑。