2016-03-24 17 views
1

Ich habe drei Klassen in einer Vererbungskette:Was ist eine gute Namenskonvention für Klassen in einer Vererbungskette?

AddActorUITests : WebTestBase : IntegrationTestBase 

aber ich irgendwie durch Namenskonvention signalisieren möchte, dass WebTestBase erbt von IntegrationTestBase so dass der Code Entwickler Schreiben in AddActorUITests nicht über WebTestBase zu überprüfen, um zu überprüfen, ob es erbt von IntegrationTestBase.

Irgendwelche Vorschläge?

+1

'WebIntegrationTestBase' - ein bisschen eine einfache TBH! – Jamiec

+1

'AddActorUiTests':' WebIntegrationTest': 'IntegrationTest'. Bitte lassen Sie auch das Suffix "* Base" fallen, wenn der Name generisch genug ist, dann brauchen Sie ihn nicht (und Sie können ihn nicht instanziieren, weil er abstrakt ist). –

+0

Es gibt eigentlich nicht wirklich. Normalerweise erhält eine Vererbung ihren übergeordneten Namen hinter/front (wie 'Card' und' TarotCard' oder 'DbContext' und' OracleDbContext'. Aber es ist nicht immer der Fall (wie 'Animal' und' Cat' oder 'ActivityBase' und 'Segeln')). – Ian

Antwort

4

Vererbung ist über is-a Beziehung zwischen den Klassen. Die Vererbung sollte leicht zu erkennen sein, ohne dass eine Konvention in der Benennung verwendet werden muss.

Zum Beispiel, wenn Sie eine Dog haben, die Animal erbt, nennen Sie es nicht DogAnimal. Es ist schon leicht zu verstehen, was ein Hund ist. Schauen wir uns das mal aus der anderen Perspektive an. Wenn Sie gegen die Klasse Dog codieren, warum ist es so wichtig zu wissen, dass es eine Animal ist, die Sie im Namen angeben müssen? Ungarische Schreibweise wurde aus einem Grund aufgegeben.

Wenn Sie diese Notation noch benötigen, verwenden Sie Vererbung nicht mehr als Toolbox. Sie machen Vererbung, nur um einige nette Eigenschaften in die Unterklassen zu bekommen? In diesem Fall ist es viel besser, dass Sie Komposition verwenden.

+0

Ja, Zusammensetzung über Vererbung! Allerdings habe ich ein riesiges Setup mit statischen und nicht statischen Eigenschaften und Hilfsmethoden. Ich versuche mehr von der Komposition zu machen, aber es ist nicht immer möglich mit meinem Setup. – Drutten

+0

Meine Code-Datenbank komplett überarbeitet! Jetzt ist es Komposition, obwohl ich diese Erbschaft noch habe. – Drutten

+0

Mit Ihrem kirsch gepflückten Beispiel ist es in der Tat nicht notwendig. Wenn man jedoch etwas konkreteres vorgibt, "Component", "ContainerComponent" zum Beispiel, ist es * üblich, dem Namen nach unten zu folgen, so dass man erkennen kann, dass eine "ContainerComponent" eine Spezialisierung von "Component" ist. – Jamiec

1

Wenn Sie Visual Studio verwenden, können Sie Kommentare verwenden?

/// <summary> 
/// Inherit <see cref="IntegrationTestBase"> class 
/// </summary> 
class WebTestBase : IntegrationTestBase 
{ 
    ... 
} 

und wenn der Benutzer aus dem WebTestBase, Visual Studio werden automatisch zeigen die Kommentare in einer popout Nachricht.

+0

Es ist zu langsam! :-) – Drutten

Verwandte Themen