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

Concurrency 高内聚性和并发性-它们是否存在利益冲突?,concurrency,coding-style,cohesion,Concurrency,Coding Style,Cohesion,我在读Robert Martin的干净代码,他提到代码具有高度的内聚性: 类应该有少量的 实例变量。每个 类的方法应该进行操作 这些变量中的一个或多个。在里面 方法的一般变量越大 操纵比 方法对其类无效。班 其中每个变量由每个 方法是最大内聚的方法是最大内聚的 但是,当我们试图编写并发代码时,我们努力将变量的范围限制在单个方法中,以避免竞争条件。但这会导致代码的内聚性最低 在设计应用程序/类时,您更喜欢什么-聚合还是并发 我喜欢Martin的很多概念,但您的代码需要正确执行,如果执行不正确,世界

我在读Robert Martin的干净代码,他提到代码具有高度的内聚性:

类应该有少量的 实例变量。每个 类的方法应该进行操作 这些变量中的一个或多个。在里面 方法的一般变量越大 操纵比 方法对其类无效。班 其中每个变量由每个 方法是最大内聚的方法是最大内聚的

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


在设计应用程序/类时,您更喜欢什么-聚合还是并发

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

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


我不确定你把重点放在了正确的地方(可能只是我读你问题的方式)。Martin并不是说应该让尽可能多的变量存在于类级别。他是说,在类级变量中,您使用了多少?如果你提升了你不需要的变量,你可能不会得到更高的内聚性。。。您可能会变得更紧密耦合。

我喜欢Martin的许多概念,但您的代码需要正确执行,如果执行不正确,世界上所有美丽的指标都不会让您看起来更好

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


我不确定你把重点放在了正确的地方(可能只是我读你问题的方式)。Martin并不是说应该让尽可能多的变量存在于类级别。他是说,在类级变量中,您使用了多少?如果你提升了你不需要的变量,你可能不会得到更高的内聚性。。。你的耦合可能会越来越紧。

谢谢吉姆。但我的问题是,当您考虑使应用程序并发时,理想的做法是最不内聚,这样您就不需要同步您的方法。我只是想知道,如果我在使类具有内聚性方面投入了太多时间,那么我会留下难以并行化的代码。您是维护代码的人。最重要的是,做你知道你能做的事情,让它正确工作。如果我必须选择,并且我知道我的应用程序是多线程的,我会选择并发。但是,我宁愿避免我必须选择的情况。谢谢吉姆。但我的问题是,当您考虑使应用程序并发时,理想的做法是最不内聚,这样您就不需要同步您的方法。我只是想知道,如果我在使类具有内聚性方面投入了太多时间,那么我会留下难以并行化的代码。您是维护代码的人。最重要的是,做你知道你能做的事情,让它正确工作。如果我必须选择,并且我知道我的应用程序是多线程的,我会选择并发。但是,我更喜欢避免我不得不选择的情况。