回答
在微軟,他們使用ClassNameOfT.cs
像這樣,很清楚。儘管我可能仍然將類命名爲非通用版本。 – 2009-04-29 20:31:52
如何:
Type.cs
和
TypeGeneric.cs
每當我在過去我總是把兩種類型在一個文件中與非泛型類型作爲文件名已經做到了這一點。我認爲這讓事情變得非常清楚,因爲.NET沒有像Java那樣每個文件都有一種類型的約定/限制。
但是如果你必須那麼我會建議像我上面,並使用後綴會使文件的任何字母順序列出(Solution Explorer中,Windows資源管理器等)一起顯示出來。
這裏是另一個想法:
Type`1.cs
這將允許你通過他們接受泛型類型參數的數量打破了不同的泛型類型。它只是一個想法,但我仍然認爲將所有類型放在一個文件中會更簡單。
所有新的Microsoft類使用泛型。在泛型出現之前,Queue
和ArrayList
就在那裏。泛型是前進的方向。
一類的每一個文件的約定是命名類名後的文件名(是否通用的不是)。對於MyClass,您將擁有MyClas.cs。對於每個新的命名空間,您都需要創建一個新文件夾。這也是Visual Studio的工作原理。
我可能會把它們放在文件夾中,而不是使用名稱空間機制。你可以比較System.Collections與System.Collections.Generic。另一方面,如果類比泛型更常見,也許最好指出那些不是泛型。那就是如果你真的想把泛型類從其他類中分離出來。就我個人而言,我通常不會那麼做,因爲我從中看不到實際的好處。
從迄今爲止的回覆看來,似乎沒有達成共識。
在子名稱空間(和子文件夾)中使用相同的文件名「泛型」(如System.Collecctions.Generics)是一個選項。但是創建新的名稱空間並不總是可取的。
例如,在爲保持向後兼容性而標記有ObsoleteAttribute的非泛型類的現有命名空間中,最好將通用版本保留在相同的命名空間中。
我認爲後綴是一種合理的方式。我已經通過使用類型參數作爲後綴(這樣的約定:MyClassT爲MyClass的< T>,或MyDictionaryKV爲MyDictionary < K,V>
剛。發現這個問題找其他人用什麼約定泛型類的文件名後
最近我一直在使用ClassName[T].cs
我真的很喜歡這個慣例,而且我認爲這是優於其他的原因如下:。
- 類型參數你跳出 多一點比他們做的 微軟慣例(例如,
ClassNameOfT.cs
)。 - 它可以讓你有多個 類型參數沒有太多 困惑:
Dictionary[TKey, TValue].cs
- 它不要求你創建任何特殊的文件夾,或者在一個特殊的命名空間中的泛型類。如果你只有幾個泛型類,那麼只有一個專用的名稱空間是不實際的。
我借這個慣例從Boo的通用語法,雖然略作修改(噓使用ClassName[of T]
)。
一些開發者似乎有一個包含字母和下劃線的文件名的恐懼症,但一旦你可以認爲這個慣例似乎工作得非常好。
,如果你在運行Visual Studio 2008。不要在您的通用文件名使用重音符`有一個與他們的已知問題,導致斷點失敗:
我看到這個話題在一年多以前就已經放棄了,但我仍然想分享一下我對這個公約的看法。
首先,具有多個具有相同名稱但類型參數數量不同的類並不總是向後兼容的情況。當然,你不會經常看到它,但是.NET的新Action和Func類只是這樣設計的,而且我目前正在實現類似的東西。
爲了清晰和可區分,我用下面的慣例,只有指定給定類型的泛型參數的個數:
- MyClass.cs
- MyClass.T1.cs
- MyClass.T2 .cs
這樣,我的文件名保持簡短而且簡單,同時仍然以簡單的額外點代價清楚地傳達類名稱和不同數量的類型參數(根據我的經驗,這是一種普遍接受的做法,並且看起來比逗號和其他非英文字母數字字符要好得多,但這只是我猜測的一個口味問題)。把類型參數的名稱(或首字母縮略詞)只是延長文件名,而在這個級別上,我並不真正對類型參數的實際名稱感興趣...
- 1. 部分類文件的命名約定
- 2. rspec文件中的文件名約定
- 3. 通用命名約定
- 4. 文件命名約定
- 5. 網頁文件名約定
- 6. Python init文件名約定
- 7. 配置文件名約定
- 8. codeigniter類名約定
- 9. 部分類文件名的命名約定?
- 10. 通用類型的簽名約束
- 11. Qt的類命名約定
- 12. zf2類的命名約定
- 13. java中的類名約定
- 14. 通用模式的命名約定?
- 15. ASPX文件名的編碼約定
- 16. 複合詞的文件名約定?
- 17. CakePHP的命名約定/文件結構
- 18. XCode中的文件命名約定
- 19. Groovy腳本文件的命名約定
- 20. MVC4中的約定文件名
- 21. 命名約定通用應用程序
- 22. 我的文件/類命名約定對於codeigniter是否正常?
- 23. C#類命名約定
- 24. 抽象類命名約定
- 25. Java通用類型參數命名約定範圍
- 26. 佈局文件命名約定?
- 27. 命名約定上傳文件
- 28. Ruby Rails Lib文件夾命名約定
- 29. 安卓android文件夾命名約定
- 30. Spring配置文件命名約定
可不可以給一個類的實例,這兩個特定的和泛型類型具有相同名稱(這可能不是一起開始奇妙的想法?)的.NET非泛型類型僅用於向後兼容。 – 2009-04-29 20:12:38
「你能舉一個既具有相同名稱的特定類型又具有泛型類型的例子」 - 你自己提供了一個答案:一個需要向後兼容性的類庫! – Joe 2009-04-29 20:16:21