我正在学习 Robert C. Martin “Clean Code”(2009 年)的书,并且偶然发现了凝聚力的概念(第 10 章)。罗伯特引用:
每个方法都使用每个变量的类具有最大的内聚性。一般来说,创建这种具有最大凝聚力的类既不可取,也不可能……
不幸的是,我在任何地方都没有找到详细的解释。有没有人用真实的代码示例对此进行解释?
提前谢谢了!!
我正在学习 Robert C. Martin “Clean Code”(2009 年)的书,并且偶然发现了凝聚力的概念(第 10 章)。罗伯特引用:
每个方法都使用每个变量的类具有最大的内聚性。一般来说,创建这种具有最大凝聚力的类既不可取,也不可能……
不幸的是,我在任何地方都没有找到详细的解释。有没有人用真实的代码示例对此进行解释?
提前谢谢了!!
将我的评论变成答案..
我能想到的一个简单实用的例子是在计算机辅助设计中表示几何形状的类。
例如:
class Circle{
float[2] center;
float radius;
draw() {
hardware.draw(center[0], center[1], radius);
}
print() {
print('Cicrle at '+center[0]+','+center[1]+' with radius '+radius);
}
scale(s) {
center[0] *= s;
center[1] *= s;
radius *= s;
}
intersectLine(line) {
/* compute intersection based on line and circle coordinates using both cnter and radius variables */
}
}
class Bezier{
float[4] controls;
draw() {
/* .. */
}
print() {
/* .. */
}
scale(s) {
/* .. */
}
intersectLine(line) {
/* .. */
}
}
正如人们所看到的,形状类具有最大的内聚性,并且考虑到对象的性质及其方法,这是完全正常的。任何计算实际利息都需要它们的变量。
希望示例和解释对您有所帮助。