在过去的几个月里,我最近开始用 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:另外,我更喜欢通过正确设计来重构,而不是快速修复。我希望它有助于未来的项目,而不仅仅是这个项目。
我试图告诉别人他的代码不是"连贯的",因为它有多种用途.我认为我不能很好地解释它,所以我正在寻找一个很好的参考和/或定义.
就面向对象设计而言,您是否认为提供将数据库保存到数据库中的功能会破坏类的COHESION?
想像:
Product p = new Product()
{
Name = "Joy Rider",
Price = 100,
Currency = "USD"
};
Run Code Online (Sandbox Code Playgroud)
您是否认为将此产品保存到DataBase最好以这种方式完成:
p.Save();
Run Code Online (Sandbox Code Playgroud)
或者以某种方式:
ProductServices.SaveProduct(p);
Run Code Online (Sandbox Code Playgroud)
你怎么看?
我现在正在进一步介绍 java 类,这就是该类的简要定义:
内聚:以高内聚为目标,在本例中,内聚意味着单个模块紧密关注其任务。
耦合:以低耦合为目标,在这种情况下,耦合意味着两个或多个模块交织的程度。
如何确定内聚性和耦合性的水平?
例如,我的一些方法调用同一类中的其他方法。这意味着调用其他方法的方法依赖于其他方法,以便“调用”方法完成其代码块。这是否意味着我对同一个类的方法具有低内聚和高耦合?或者这些概念更多的是指不同的类和不同的包?
程序内聚性表示模块的各个部分被分组,因为它们始终遵循一定的执行顺序; 而顺序内聚性表示模块的各个部分被分组,这是因为一个零件的输出是 流水线等另一零件的输入。这些定义是模棱两可的。请解释。