我有繼承鏈中的三類:什麼是繼承鏈中的類的良好命名約定?
AddActorUITests : WebTestBase : IntegrationTestBase
不過,我會以某種方式希望通過命名約定,從IntegrationTestBase
WebTestBase
繼承,使得AddActorUITests
開發人員編寫代碼沒有信號檢查WebTestBase
驗證它繼承自IntegrationTestBase
。
有什麼建議嗎?
我有繼承鏈中的三類:什麼是繼承鏈中的類的良好命名約定?
AddActorUITests : WebTestBase : IntegrationTestBase
不過,我會以某種方式希望通過命名約定,從IntegrationTestBase
WebTestBase
繼承,使得AddActorUITests
開發人員編寫代碼沒有信號檢查WebTestBase
驗證它繼承自IntegrationTestBase
。
有什麼建議嗎?
繼承約爲is-a
類之間的關係。繼承應該容易說明,而不必在命名中使用某種約定。
例如,如果您有一個Dog
繼承Animal
,您不會將其命名爲DogAnimal
。很容易理解一隻狗是什麼。我們從另一個角度來看待它。當你對Dog
班進行編碼時,爲什麼知道這是一個Animal
,你需要用名字表明它是如此重要?匈牙利符號被放棄是有原因的。
如果您仍然需要這種表示法,是不是更多使用繼承作爲工具箱。即你爲了獲得子類中的一些很好的特性而繼承?在這種情況下,使用合成更好。
如果您使用Visual Studio
您可以使用評論嗎?
/// <summary>
/// Inherit <see cref="IntegrationTestBase"> class
/// </summary>
class WebTestBase : IntegrationTestBase
{
...
}
和當用戶鍵入出WebTestBase
,Visual Studio
將自動顯示在一個彈出式視窗消息的評論。
太慢了! :-) – Drutten
'WebIntegrationTestBase' - 一個不費腦筋的TBH! – Jamiec
'AddActorUiTests':'WebIntegrationTest':'IntegrationTest'。如果名稱足夠通用,那麼也請刪除'* Base'後綴,那麼您不需要它(並且因爲它是抽象的,所以不能實例化它)。 –
其實沒有任何實際的。通常情況下,繼承的父名會加在/ front後面(比如'Card'和'TarotCard'或'DbContext'和'OracleDbContext'),但並不總是這樣(例如'Animal'和'Cat'或'ActivityBase'和'Sailing'))。 – Ian