.NET Sammlung Namenskonvention
Mein Kollege und ich habe eine Diskussion darüber, welche Sammlungen genannt werden sollte.
Beispiel:
Klasse Produkt - Kollektion - Erstklassige Produkte
oder
Class-Produkt - Auflistung - Klasse ProductCollection
Ich habe einen Blick, um zu sehen, wenn ich sehen kann, irgendwelche Richtlinien oder Gründe für die Nutzung eines oder das andere, aber nichts scheint, um die Feder aus. Der Rahmen scheint beide Varianten zum Beispiel. Das argument, das ich sehen kann, ist, dass eine Klasse, die eine Sammlung von Produkten, sollten Sie die variable als "Produkte" bezeichnet, aber es sollte vom Typ ProductCollection.
Ist das so richtig wenn ja, welche?
In der gleichen Leitschaufel ist es, einen standard für die Benennung der return-variable für eine Funktion. z.B. retVal?
Wir vor allem von code in C#, obwohl ich nicht sicher bin, dass wirkt sich auf meine Frage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde sagen, dass mit Generika sollte es nur selten einen Grund, um eine benutzerdefinierte Sammlung geben. Aber wenn es sein muss, würde ich sagen, dass
ProductCollection
würde am besten passen die Namenskonventionen des Frameworks.Immer noch, sollten Sie erwägen, ein
List<Product>
oderCollection<Product>
oder noch besserIList<Product>
oderICollection<Product>
.Edit: Dies ist die Antwort auf MrEdmundo die Kommentare unten.
In Ihrem Fall haben Sie zwei Möglichkeiten. Die offensichtliche Wahl wäre, die Vererbung verwenden, wie diese:
Sage ich deutlich, weil es scheint wie die beste Idee, auf den ersten Blick, aber nach ein wenig überlegung wird es klar, dass dies nicht die beste Wahl. Was, wenn Ihnen oder von Microsoft erstellt eine neue
SuperAwesomeList<T>
und Sie nicht nutzen möchten, zu verbessern die Leistung IhresBallCollection
Klasse? Es würde schwierig sein, da Sie gebunden sind an dieList<T>
Klasse durch Vererbung und ändern Sie die Basisklasse, potenziell break-code, der verwendetBallCollection
alsList<T>
.Also, was ist die bessere Lösung? Ich würde empfehlen, dass Sie in diesem Fall nicht besser wäre, zu Gunsten Zusammensetzung über Vererbung. Wie würde also eine Zusammensetzung-basierte Lösung Aussehen?
Beachten Sie, dass ich erklärt haben, die
Balls
Eigenschaft TypIList<T>
. Dies bedeutet, dass Sie frei sind, die zum implementieren der Eigenschaft, mit welcher Art Sie wollen, so lange dieser Typ implementiertIList<T>
. Dies bedeutet, dass Sie frei verwenden können einSuperAwesomeList<T>
an jedem Punkt die macht diese Art deutlich besser skalierbar und weniger schmerzhaft zu pflegen.List<Product>
im Gegensatz zum Erben von ihm.List<Ball>
sollte gut funktionieren.Produkte ist sicherlich nicht korrekt IMHO. Eine nicht-statische Klasse name sollte repräsentieren ein Substantiv (nicht im plural), denn Sie sollten in der Lage sein zu sagen "x ist ein [classname]".
Offensichtlich, Produkte passt nicht in dieses Schema. ProductCollection hat:
Illustration:
Denen man "richtig klingt" ?
Andere Sache, über die Benennung collection-Klassen: gewöhnlich versuche ich Namen Kollektion-Klassen in einer solchen Weise, dass es klar ist, welche Art von Sammlung es ist.
Beispiel:
Den letzten kann man zweideutig sein, wenn es könnte ein Zweifel, was der Schlüssel des dictionary ist, so ist es besser, zu geben, was die key-Typ ist (wie ProductDictionaryByString). Aber um ehrlich zu sein, habe ich selten nennen es so, weil die meisten der Zeit, wird der Schlüssel ein string, sowieso.
products
stattlist
als Variablenname in diesen Beispielen?Den .NET Framework verwendet Häufig eine "Sammlung" postfix für seine Sammlung Arten. StringCollection, ObservableCollection, KeyedCollection, etc. So gehen Sie mit ProductCollection.
Bemerkt niemand beantwortet Sie auf der retVal-Zeug (Oder ich konnte einfach immer blind). Ich bin zwar kein Experte; auf die Frage der
retVal
Problem ich bin mir nicht 100% sicher was du meinst mit "naming -, Rückgabe-variable", aber wenn du meinst Sachen wie diese:Ich würde sagen, egal, was die Konvention ist, tun Sie es nicht. Es ist sehr ärgerlich. Nur den Rückgabewert statt. Wenn Sie brauchen, um wieder mehr als eine Sache, dann ich denken würde, dass die Methode entweder nicht mehr als eine Sache (die Methode sollte nicht) oder diese Dinge sollten eingepackt werden in eine Art von logischer Klasse, die zurückgegeben werden, statt.
Wenn anstelle von "naming -, Rückgabe-variable" meinst du Sachen wie diese:
Dann würde ich sagen, dem Namen der variable nach dem, was es ist. Was es wird für verwendet werden. Wenn Ihr eine Liste der Autos, nennen es
listOfCars
, wenn es ein Stück Brot gegessen werden, später nennen Sie espieceOfBread
oderpieceOfBreadToBeEatenLater
.Hoffe, dass geholfen, und, dass es nicht zu weit Weg in ein Feld irgendwo :p
Thesaurus.com
Suchen Sie nicht weiter. Nicht mehr werden Sie mull über pluralisiert Singularität. Einfach befestigen Sie eine der diese plural-Protektoren an Ihrem Objekt name:
Machen Spaß.