处理大类

BLa*_*uRE 5 java class matrix cohesion

在过去的几个月里,我最近开始用 Java 编码。我有一个 Matrix 类,它因为有很多方法而变得过于臃肿。我还有一个 SquareMatrix 类,它扩展了 Matrix,并减少了一些膨胀。

我发现 Matrix 类中的许多方法通常与矩阵相关。它具有所有基础知识,如 addMatrix(Matrix)、multiplyMatrix(Matrix)、multiplyMatrix(float),以及更复杂的方法,如 getGaussian(Matrix) 或 getLUDecomposition(Matrix)。

减少 Matrix 类中的行数有哪些选择?一个类变得非常大是正常的吗?我不这么认为......这是我应该尽早考虑并且重构很困难的事情吗?或者有简单的解决方案吗?

谢谢!


编辑:在阅读了一些回复后,我正在考虑执行以下操作:

实用程序类Matrix 包含矩阵的所有常见/基本方法

委托类(Helper/sub):

*辅助类* getGaussian(..), getLUFactorization(..), ...

子类 (扩展矩阵)SquareMatrix、LowerTriMatrix、UpperTriMatrix、...

委托似乎类似于在 C++ 中定义多个带有头文件的 .cpp 文件。仍然欢迎更多提示。


Edit2:另外,我更喜欢通过正确设计来重构,而不是快速修复。我希望它有助于未来的项目,而不仅仅是这个项目。

Pét*_*rök 3

接口应该是完整的最小的,这意味着类型接口应该包含在该类型上实现所需且有意义的任务所需的所有方法,并且仅包含这些方法。

因此,分析 Matrix 的 API 方法并确定哪些属于核心 API(必须有权访问类的内部才能完成其任务),哪些提供“扩展”功能。然后将类 API 缩减为核心功能,将其余方法迁移到单独的帮助程序/实用程序/子类,这些类可以使用公共核心 API 来实现其目标。

如需重构/单元测试帮助,请考虑获取Michael Feathers 的《有效处理遗留代码》