如果您打算在C#中编写一个非常并行的应用程序,那么构建非常小的东西会更好,例如
20个小班,制作40个较大的班级,共计60个班级,总计120个
或巨大的:
单独制作这60个课程(仍然考虑到可重用性)。
所以在#2中,这60个类可以包含做事而不是其他类的方法。
答案 0 :(得分:5)
抽象地说,这些方法中的任何一种都不会产生影响。
具体而言,最小化可变状态将使您的应用程序更加可兼容。每次更改对象实例的状态时,都会产生线程安全问题的可能性(复杂性或错误;至少选择一个)。如果你看一下并行LINQ或强调并行性的函数式语言,你会发现类设计比避免状态变化更为重要。
班级设计是为了你的理智。松散耦合的代码使您更加清醒。不可变对象使您更加平行。根据需要合并。
答案 1 :(得分:4)
较小的部件更容易测试,更容易重构,更易于维护。
答案 2 :(得分:4)
这不是类的大小,而是重要的耦合范围。
对于并行应用程序,您应该支持不可变对象---有时称为“值对象”而不是具有大量属性的对象。如果需要应用导致新值的操作,只需创建新对象即可。
观察关注点的良好分离,并让它引导您使用自然数量的类来表示程序中的概念。我推荐SOLID原则,由ObjectMentor的Robert Martin编目和推广。 (这应该足以找到谷歌饲料!)
最后,我还建议您熟悉System.Threading和System.Collections。大多数集合本身并不是线程安全的,并且同步很难正确。因此,您最好使用广泛使用的,经过测试的,可靠的同步原语。