.NET-Klassenpräfix- und Postfix-Namenskonventionen

8

Entwicklerteams haben normalerweise einige Klassenbenennungskonventionen basierend auf Klassenfunktionen und Rollen, die sie in Mustern spielt. Zum Beispiel verwenden wir die folgenden Postfixes :

  • Info für Datenstrukturklassen (nur öffentliche Eigenschaften, keine Methoden wie Geschäftsentitäten).
  • Helper für Klassen mit allgemeinen Funktionen, die im gesamten Projekt verwendet werden (StringHelper, FormatHelper, ImageHelper)
  • Controller für MVC-Controller
  • Repository für DAL-Klassen, die Operationen enthalten, die nach Entitäten gruppiert sind, denen sie (PersonRepository, OrderRepository)
  • zugeordnet sind
  • Manager für Business-Logik-Klassen

usw.

Wie lauten die Namenskonventionen für Postfixes / Präfixe, die Ihr Team verwendet?

    
Andrew Florko 15.07.2010, 08:32
quelle

6 Antworten

1

Es gibt drei Präfixe, die wir verwenden: I , T und _ . Die erste wird für Schnittstellen, die zweite für generische Typen und die dritte für Property Backer verwendet. Ich rate dringend von anderen Präfixen ab. Dies entspricht übrigens den Empfehlungen von Microsoft. BEARBEITEN : Ich meine hier, dass Microsoft empfiehlt, keine anderen Präfixe als I und T zu verwenden. Weitere Informationen finden Sie unter Richtlinien für Namen - Namen von Klassen, Strukturen und Schnittstellen . Ich verletze bereits, indem ich _ verwende, aber ich habe das Bedürfnis, zwischen privaten Feldern und Property-Backern zu unterscheiden, und ich mag die Tatsache, dass _ nicht alphanumerisch ist. / BEARBEITEN

Die Liste der Postfixes ist nahezu endlos. Sie basieren häufig auf dem Namen der Basisklasse / Schnittstelle, z. B. IDispatcher - & gt; EmailDispatcher .

Persönlich mag ich Postfixes wie Info nicht sehr, weil sie zu allgemein sind, da die meisten Klassen sowieso irgendeine Art von Information darstellen. Schließlich möchte ich Service als Postfix anstelle von Manager verwenden.

BEARBEITEN Ich benutze den Provider Postfix auch sehr oft, wie in der bekannten ApplicationRoleProvider BCL Klasse.

    
Sandor Drieënhuizen 02.07.2010 06:48
quelle
0

Wir verwenden ein 'I' Präfix für Schnittstellen und das ist es. Im Allgemeinen versuchen wir, die Sprache (wir verwenden mehrere) für die Benennung von Konventionen zu verwenden, um zu vermeiden, Konventionen in unserem Code für Orte zu mischen, an denen wir die bestehenden Konventionen erfüllen müssen. Wir sprechen sozusagen nicht gegen die Sprachstandards, da wir Konventionen mischen müssten.

Nachdem ich in den letzten zehn Jahren mit verschiedenen Projekten und Kodierungsstandards gearbeitet habe, bin ich zu der Überzeugung gelangt, dass je exotischer die Standards werden und je mehr sie in subjektive Bereiche eindringen, desto wahrscheinlicher ist es, dass sie die Leute komplett abschalten behindern die Produktivität des Teams.

Es gibt gute Praktiken, die helfen, Code zum Beispiel leichter zu debuggen (z. B. nicht mehrere Anweisungen in einer Zeile zu stopfen) und dazu beizutragen, effizienteren, robusteren Code zu erzeugen (Variablen definieren, wenn sie sinnvoll initialisiert werden können) mit begrenztem Umfang), aber diejenigen, die keine sehr unvoreingenommenen, objektiven Argumente für sie haben, verlangen normalerweise, dass Entwickler die persönlichen Vorlieben von jemandem abonnieren.

Insbesondere mit den Namenskonventionen sind einige Praktiken geradezu schädlich und kontraproduktiv. Die ungarische Notation setzt z.B. einen vorherrschenden Fokus auf Typen, wenn moderne Entwickler im Allgemeinen mehr auf die Schnittstelle (en), die ein Typ bereitstellt, und Polymorphismus als auf die spezifischen Typen selbst konzentrieren. Ich mag auch die "Manager" -Konvention nicht besonders, da die meisten höheren Klassen, die sich der Komposition bedienen, oft als in diese Kategorie eingeordnet betrachtet werden, und dann wird das Suffix sehr überflüssig und viel zu oft verwendet.

>     
stinky472 02.07.2010 07:01
quelle
0

FXCop erkennt die Präfixe s_ und m_ und wird sich beschweren, wenn Sie sie mischen. Ich mag sie besser als das generische _ Präfix, das C # Entwickler bevorzugen.

I wird immer für Schnittstellen und T für generische Parameter verwendet. Niemand bestreitet das.

Alles andere wird durch Suffixe wie Collection gehandhabt. Ich werde sie nicht auflisten, weil sie entweder offensichtlich sind oder spezifisch für die Bibliotheken meines Unternehmens sind.

Ich habe gemischte Gedanken über Kontrollen. Manchmal benutze ich die richtigen Pascal-Namen, andere Male benutze ich die alten VB-Stil-Präfixe wie txt, cmd, lbl, usw. Es gibt Mertis und Fehler zu beiden.

    
Jonathan Allen 02.07.2010 07:06
quelle
0

Für Klassennamen bevorzuge ich Suffixe als Präfixe; z.B. für verschiedene Arten von Block-Klasse habe ich BlockBase, BlockText, BlockCollection, BlockSequence, BlockTable, BlockDocument usw. Ich bevorzuge Suffixe, weil es hilft, sie alphabetisch zu gruppieren.

Um ein anderes Beispiel zu nennen: Wenn ich mehrere Klassen hätte, die IDispatcher implementieren, könnte ich DispatchEmail anstelle von EMailDispatcher bevorzugen.

Andererseits verwende ich alternativ interne Namespaces (d. h. Ordner in einem Projekt / Assembly), um dies zu tun.

    
ChrisW 02.07.2010 07:13
quelle
0

Unser Team setzt alle Klassen mit "C" voran, alle Schnittstellen mit I und alle Strukturen mit T. Das ist schrecklich - zumindest beginnen die Klassen mit "C". Weil die Quelldateien den gleichen Namen wie die Klasse haben. Dann, wenn die Quelldateien in alphabetischer Reihenfolge aufgeführt sind, ist es schwer zu finden, was Sie wollen! Da das Projekt mehrere Jahre alt ist, ist das Umbenennen aller Klassen und Quelldateien keine Option, daher bleibt die Konvention erhalten.

    
GarethOwen 02.07.2010 12:09
quelle
0

Sie haben

vergessen
  • Model für MVC-Modelle
  • View für MVC-Ansichten

Wir verwenden auch Manager , wahrscheinlich zu oft, für Klassen, die unter einer anderen Klasse, z.B. UserManager.

    
abatishchev 02.07.2010 12:18
quelle

Tags und Links