1

a 一直在编写 Java EE 6 Web 应用程序,这确实是我正在编写的第一个认真的应用程序。我注意到我的课程有 500 到 1000 行,并且可能会变得更大。我不知道一个类应该有多大或者它是否重要,但如果它会对应用程序性能产生负面影响,我不想继续编写巨大的类。你对我有什么建议?

4

3 回答 3

6

“班级的第一条规则是它们应该小。班级的第二条规则是它们应该比那个小。”

类的名称应该描述它履行的职责。事实上,命名可能是帮助确定班级规模的第一种方式。如果我们不能为一个类派生一个简洁的名称,那么它可能太大了。类名越模糊,就越有可能承担过多的职责。例如,包含诸如 Processor 或 Manager 或 Super 之类的黄鼠狼字的类名通常暗示不幸的职责聚合。

我们还应该能够用大约 25 个单词写出该类的简短描述,而无需使用“如果”、“并且”、“或”或“但是”这些词。我们如何描述 SuperDashboard?“SuperDashboard 提供了对最后保持焦点的组件的访问,它还允许我们跟踪版本和内部版本号。” 第一个“和”暗示 SuperDashboard 的职责太多。

我们希望我们的系统由许多小类组成,而不是几个大类。每个小类都封装了一个职责,有一个改变的理由,并与其他几个类协作以实现所需的系统行为。

COHESION = 类应该有少量的实例变量。一个类的每个方法都应该操作一个或多个这些变量。一般来说,一个方法操作的变量越多,该方法对其类的凝聚力就越大。每个方法都使用每个变量的类具有最大的内聚性。一般来说,创建这种最大凝聚力的类既不可取,也不可能;另一方面,我们希望凝聚力高。当内聚度高时,意味着类的方法和变量是相互依赖的,并且作为一个逻辑整体挂在一起。

-来自清洁代码:敏捷软件工艺手册

于 2013-05-03T05:01:09.603 回答
1

一般来说,我会尽可能坚持不超过一页的方法。所以说一种方法是 50 行 + 注释,顺便说一句,这是一个很大的方法,所以这意味着你可能在 500 行中有 6 个方法。我怀疑你的方法超过了一个页面,这使得你的类非常大。

正如其他人所提到的,代码质量会受到更大的类的影响。我会看看你的代码有多少可以进入一个抽象类,或者作为这些其他类的一部分引用的更小的类。

话虽如此,有时开小班并不容易。但是如果你所有的类都很大,你可能没有利用抽象类、聚合等。

于 2013-05-03T04:50:42.217 回答
1

我认为基于代码行数的类的大小是是否应该分解的模糊指标。

但是,我们应该始终尝试编写最少数量的类和方法。这是因为小东西更容易理解——但如果有太多(虽然完全可以理解)的部分,你将无法看到整个画面。

此外,您需要注意 JVM 的一些限制,例如本文中解释的方法大小。

您应该删除不再需要的方法(或者可能只是出于恐惧才添加的方法)。如果不使用代码,则它的值小于零。一个类应该有一个且只有一个明确定义的职责。如果你的班级是/有/做了几件不同的事情,你打算怎么称呼这个班级?

你需要找到合适的平衡点。

于 2013-05-03T04:58:26.477 回答