高凝聚力和并发性 - 它们是否存在利益冲突?

时间:2010-09-16 03:48:09

标签: concurrency coding-style cohesion

我正在阅读罗伯特·马丁的清洁代码,并且他提到代码具有高度凝聚力:

  

类应该少量   实例变量。每一个   一个类的方法应该操纵   这些变量中的一个或多个。在   一般来说,一个方法变量越大   操纵更具凝聚力的那个   方法是它的类。一堂课   每个变量使用哪个变量   方法是最大的凝聚力方法是最大的凝聚力

但是当我们尝试编写并发代码时,我们会努力将变量的范围限制为单个方法以避免竞争条件。但这导致代码的内聚性最差。

在设计应用程序/类时,您应该更喜欢什么 - Cohesion或Concurrency?

1 个答案:

答案 0 :(得分:1)

我喜欢Martin的一些概念,但你的代码需要正确执行,如果没有,世界上所有漂亮的指标都不会让你看起来更好。

除此之外,线程问题是最糟糕的调试之一,你不应该为了并发而牺牲你的设计,以符合你在一本关于凝聚力的书中所写的内容。再一次,我不是在敲马丁......我相信他会告诉你同样的事情。毕竟,他认识到在他的大部分写作中几乎所有内容都是连续的。

我不确定你是否把重点放在了正确的位置(可能只是我正在阅读你的问题的方式)。马丁并没有说你应该在班级尽可能多地生成变量。他说的是班级变量,你用了多少?如果你推广你不需要的变量,你可能无法获得更高的凝聚力......你可能会得到更紧密的耦合。