2011-03-16 235 views
2

我知道這也許是一個愚蠢的問題,但泛型的命名標準是什麼?T或者TEntity?

T或TEntity或......它並不重要嗎?

我看到IQueryable(Of T),但接着是DBSet(Of TEntity)。

回答

4

微軟使following recommendations in Generics FAQ: Best Practices:用描述性的名稱

名稱泛型類型參數,除非單個字母的名字完全是自我解釋和描述性的名稱不會增加價值。 [...]如果您有關於類型參數沒有額外的上下文信息,您應該使用字母T.

Public Class SomeClass(Of T) 

Public Interface ISessionChannel(Of TSession) 

我一般遵循微軟的命名約定,除非我有一個非常好的理由不,如果只是因爲其他許多開發者也這樣做,並且很容易在不同的代碼庫中移動。

2

你知道,我一直想知道這個自己,我想最後我想出了是這樣的:

應該T如果T是任何類型的,或者TSomething如果T有是Something的子類。

我不知道這是否是正確的「規則」,但這是我迄今爲止使用的。

+0

我在想同一類型的東西,但是在實體框架中,很多接口的範圍都是類,例如DBSet(TEntity As Class)。你會如何命名? – Sam 2011-03-16 05:32:45

+1

@Sam:「Class」沒有詳細說明對象應該如何工作,或者它在架構中的位置,但是Entity的確如此,所以我個人堅持使用TEntity。 – 2011-03-16 05:35:25

+0

@Sam:是的,我不知道......我可能只是把它命名爲'T',但那只是我。 – Mehrdad 2011-03-16 06:37:14

3

微軟的naming guidelines給出了幾個建議。如果不在這裏複製和粘貼它們,推薦使用「T」作爲前綴,當「...描述性名稱不會增加價值」時,「T」本身就是合適的。字典是一個更長名稱適用於TKey和TValue的例子。