不幸的是,C#沒有任何東西像C++的friend
。因此,例如,爲了解決像經典的矩陣/向量乘法例子(其中效率可以通過結交矩陣和向量來獲得,使得每個類別可以訪問另一個類別的私有成員),我必須定義班級成員internal
。.NET程序集應該多大(小)?
現在我知道我自己了,不適當的封裝會遲早導致代碼混亂。因此,我想保持儘可能小的宇宙。
這將導致非常小的組件。
這是否有任何缺點,或者沒有關係?
不幸的是,C#沒有任何東西像C++的friend
。因此,例如,爲了解決像經典的矩陣/向量乘法例子(其中效率可以通過結交矩陣和向量來獲得,使得每個類別可以訪問另一個類別的私有成員),我必須定義班級成員internal
。.NET程序集應該多大(小)?
現在我知道我自己了,不適當的封裝會遲早導致代碼混亂。因此,我想保持儘可能小的宇宙。
這將導致非常小的組件。
這是否有任何缺點,或者沒有關係?
標題中的問題的答案:組裝應該是多少?
對組件尺寸沒有特別的要求或建議。
*由於需要在更多地方查找信息,理論上可能會減慢裝配的數量(可能以千計)。
當選擇大小考慮:
如果你不喜歡內部原因,它太開放了(對於你的api的其餘部分),讓那些需要對彼此開放的類包含一個單獨的微組件,其中包含這一小組類。您總是可以將該程序集嵌入到主API組件中。
這應該讓你的課程保持對彼此開放,而不是讓其他人進入(除非他們公然忽略你的組裝結構,並且把更多的東西放在你的幫手組件中,而不是它的名字意味着它應該包含。做這樣的事?!:)
是的,但朋友班不。而且,當我認爲「內部」不夠嚴格時,朋友集會不會有所幫助。 – JohnB
你需要/需要什麼類型的限制,需要一個類在組件中是私有的而不是內部的? –
您是否假設使用公共接口很慢?我想你正在通過一些屬性/索引器訪問第i個和第j個元素。我認爲微軟JIT編譯器足夠聰明,可以內聯微不足道的屬性訪問,所以你不會購買任何東西,但破壞封裝的代碼。 –
對於過於模糊,研究性能不佳的相關問題,測試始終是答案。 –
另外,「不成熟的優化是萬惡之源」,對Ed? :) – Mithon