-2

如果您打算用 C# 编写一个非常并行的应用程序,那么构建非常小的东西会更好吗,比如

小班20个,大班40个,加起来60个,一共120个

或巨大的,例如:

单独制作这 60 个类(仍然考虑到可重用性)。

所以在#2 中,这 60 个类可以包含做事的方法,而不是其他类。

4

3 回答 3

5

抽象地说,这些方法中的任何一种都不会有所作为。

具体来说,最小化可变状态将使您的应用程序更具可并行性。每次更改对象实例的状态时,都会产生潜在的线程安全问题(复杂性或错误;至少选择一个)。如果您查看 Parallel LINQ 或强调并行性的函数式语言,您会注意到类设计的重要性低于避免状态更改的原则。

班级设计是为了你的理智。松散耦合的代码让你更加理智。不可变对象使您更加并行。根据需要组合。

于 2009-03-04T19:33:14.880 回答
4

较小的部分更容易测试、更容易重构和更容易维护。

于 2009-03-04T19:32:13.507 回答
4

重要的不是类的大小,而是耦合的范围。

对于并行应用程序,您应该支持不可变对象——有时称为“值对象”,而不是具有很多属性的对象。如果您需要应用产生新值的操作,只需创建新对象作为结果。

观察良好的关注点分离,并让它引导您使用自然数量的类来表示程序中的概念。我推荐由 ObjectMentor 的 Robert Martin 编目和推广的 SOLID 原则。(这应该足以找到列表的谷歌素材!)

最后,我还建议您熟悉 System.Threading 和 System.Collections。大多数集合本质上不是线程安全的,而且众所周知,同步很难做到正确。因此,您最好使用广泛使用、经过测试且可靠的同步原语。

于 2009-03-04T19:41:11.943 回答