2009-03-04 64 views
-2

如果你打算写在C#中一个非常并行应用程序,是能够更好地构建东西很小,像原子或巨型

20个小类,使40个大类别,共同制作60多个,为总共120

或巨大等:

使这些60类单独(仍然在考虑可重用)。

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

+0

有人有权利清理问题一点。我认为它有好的答案,但问题可能会更清晰/写得更好。 – BuddyJoe 2009-03-04 21:52:15

回答

4

小块更容易测试,更容易重构,更易于维护。

5

抽象地说,这些方法都不会有所作为。

具体而言,最小化可变状态将使您的应用程序更具可调整性。每次更改对象实例的状态时,都会为线程安全问题(复杂性或错误;至少选择一项)创建潜力。如果你看看并行LINQ或者强调并行性的函数式语言,你会注意到,类设计并不重要的是避免状态变化。

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

4

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

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

观察问题的良好分离,并让它引导自然数目的类来表示程序中的概念。我推荐SOLID原则,由ObjectMentor的Robert Martin编目和推广。 (这应该足够谷歌饲料找到列表!)

最后,我还建议您与System.Threading和System.Collections都亲密。大多数集合本质上不是线程安全的,并且同步非常难以正确进行。所以,最好使用广泛使用的,经过测试的,可靠的同步原语。