2009-03-04 38 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都親密。大多數集合本質上不是線程安全的,並且同步非常難以正確進行。所以,最好使用廣泛使用的,經過測試的,可靠的同步原語。