我正在阅读 Robert Martin 的 Clean Code,其中他提到代码具有高度凝聚力:
类应该有少量的实例变量。一个类的每个方法都应该操作一个或多个这些变量。一般来说,一个方法操作的变量越多,该方法对其类的凝聚力就越大。每个方法使用每个变量的类是最大内聚的方法是最大内聚的
但是当我们尝试编写并发代码时,我们努力将变量的范围限制在单个方法中以避免竞争条件。但这会导致代码的凝聚力最低。
在设计应用程序/类时,您应该更喜欢什么 - 内聚或并发?
我正在阅读 Robert Martin 的 Clean Code,其中他提到代码具有高度凝聚力:
类应该有少量的实例变量。一个类的每个方法都应该操作一个或多个这些变量。一般来说,一个方法操作的变量越多,该方法对其类的凝聚力就越大。每个方法使用每个变量的类是最大内聚的方法是最大内聚的
但是当我们尝试编写并发代码时,我们努力将变量的范围限制在单个方法中以避免竞争条件。但这会导致代码的凝聚力最低。
在设计应用程序/类时,您应该更喜欢什么 - 内聚或并发?
我喜欢 Martin 的很多概念,但是你的代码需要正确执行,如果不能正确执行,世界上所有漂亮的指标都不会让你看起来更好。
此外,线程问题是要调试的最糟糕的问题之一,并且您不应该为了符合您对某人在一本关于内聚力的书中所写内容的想法而妥协您的并发设计。再说一次,我不会敲马丁……我相信他会告诉你同样的事情。毕竟,他认识到,在他的大部分作品中,几乎所有内容都是连续的。
不过,我不确定您是否将重点放在了正确的位置(可能就是我正在阅读您的问题的方式)。Martin 并不是说你应该让尽可能多的变量存在于类级别。他说的是类级别的变量,你用了多少?如果您提升不需要的变量,您可能不会获得更高的内聚性......您可能会获得更紧密的耦合。