Benennung verwandter Klassen und Schnittstellen

9

Ich habe eine ObjectParserKlasse erstellt, die Daten unter Verwendung von IObjectParserDataSourceals Datenquelle in stark typisierte Objekte analysiert (die Daten können eine Excel-Datei, eine Textdatei, ein Array, eine Abfragezeichenfolge usw. sein).

Beispiele für meine Implementierungen von IObjectParserDataSourcesind:

  • TextFileObjectParserDataSource
  • ExcelFileObjectParserDataSource

Diese Klassennamen fühlen sich für mich sehr lang und verworren an.

Ich könnte sie nennen:

  • TextFileDataSource
  • ExcelFileDataSource

Dies führt jedoch zu einer gewissen Mehrdeutigkeit, mit der sie IObjectParserDataSourceauf den ersten Blick nicht so eindeutig verbunden sind . Dies wird wichtig, da die Definition dieser Datenquellen im Client-Code erfolgt und ich potenzielle Verwirrung und Unsicherheit minimieren möchte.

Wie würden Sie diese Klassen in einem solchen Szenario benennen?

Dave New
quelle
1
Ich denke nicht, dass Ihre aktuellen Namen zu lang und verworren sind.
AakashM
Ich werfe diese Idee da draußen, aber ich empfehle sie nicht: Wenn Sie dieselbe Zeichenfolge (z. B. "ObjectParserDataSource") häufig in Ihrer Benennung verwenden, verwenden Sie das Akronym. ExcelFileOPDS, TextFileOPDS. Es spart ein wenig an Eingabe und Platz auf dem Bildschirm, ist aber für jemanden, der mit dem Code nicht vertraut ist, undurchsichtig.
Bobson

Antworten:

22

Ich versuche im Allgemeinen, dieses Problem zu umgehen, indem ich alle ähnlichen Objekte in einen Namespace stecke und ihre Namen vereinfache (wenn ich das kann).

Zum Beispiel hätte

Namespace ObjectParserDataSources
|
| -> Klasse TextFileSource
| -> Klasse ExcelFileSource

Wenn die Sammlung von Objekten, die mit / servicing arbeiten, ObjectParsergroß genug wird, würde ich einen separaten Ordnerbaum oder ein separates Projekt erstellen, das nur ObjectParser gewidmet ist:

namespace ObjectParser
|
|-> class ObjectParser
|-> interface IObjectParserDataSource
|
|-> namespace DataSources
|   |
|   |-> class TextFileSource
|   |-> class ExcelFileSource
|
|-> other stuff...

Innerhalb einer bestimmten Datei machen die Importanweisungen und der Codekontext normalerweise ziemlich deutlich, dass TextFileSourcees sich um die ObjectParserDatenquelle handelt. Wenn sich mehrere gleichnamige Klassen im selben Code befinden, können Sie auf TextFileSourceden vollständigen Namen verweisen :

var parserSource = new ObjectParser.DataSources.TextFileSource(/*...*/);

Es kommt normalerweise sehr selten vor und es macht mir nichts aus, ein paar zusätzliche Wörter zu tippen.

ikh
quelle
1
Du hast mir die Zeit gespart, die gleiche Antwort zu schreiben :)
Michael Brown
1
+1. Diese Lösung verbessert die Lesbarkeit, ohne die Klarheit zu beeinträchtigen.
John Cartwright