我正在阅读罗伯特·马丁的清洁代码,并且他提到代码具有高度凝聚力:
类应该少量 实例变量。每一个 一个类的方法应该操纵 这些变量中的一个或多个。在 一般来说,一个方法变量越大 操纵更具凝聚力的那个 方法是它的类。一堂课 每个变量使用哪个变量 方法是最大的凝聚力方法是最大的凝聚力
但是当我们尝试编写并发代码时,我们会努力将变量的范围限制为单个方法以避免竞争条件。但这导致代码的内聚性最差。
在设计应用程序/类时,您应该更喜欢什么 - Cohesion或Concurrency?
答案 0 :(得分:1)
我喜欢Martin的一些概念,但你的代码需要正确执行,如果没有,世界上所有漂亮的指标都不会让你看起来更好。
除此之外,线程问题是最糟糕的调试之一,你不应该为了并发而牺牲你的设计,以符合你在一本关于凝聚力的书中所写的内容。再一次,我不是在敲马丁......我相信他会告诉你同样的事情。毕竟,他认识到在他的大部分写作中几乎所有内容都是连续的。
我不确定你是否把重点放在了正确的位置(可能只是我正在阅读你的问题的方式)。马丁并没有说你应该在班级尽可能多地生成变量。他说的是班级变量,你用了多少?如果你推广你不需要的变量,你可能无法获得更高的凝聚力......你可能会得到更紧密的耦合。