Spring Namensgebung bei Klassen

K

kneitzel

Gast
Hallo zusammen,

ich frage mich derzeit, wie ihr denn die Klassen für eure Beans genau benennt. Ich entwickle jetzt schon etwas mit Spring und muss sagen, dass mir die Namensgebung bei mir bisher nicht wirklich gefällt.

Ich habe ein Interface, das das Verhalten eines Beans vorgibt. Das hat einen Namen wie z.B. "DocumentService". Nun habe ich aber auch eine Implementation dieses Interfaces. Wie benennt Ihr sowas?
DocumentServiceFacade habe ich schon gesehen (z.B. "Introducing Spring Framework", Apress Verlag). Aber irgendwie finde ich das nicht passend). Ich selbst habe da auch schon an den Anhang "Impl" oder "Implementation" gedacht (Hab ich auch schon irgendwo gesehen, aber habe kein Referenz zur Hand), aber das ist auch irgendwie doof. Dass es eine Implementierung des Interfaces ist, ist ja klar, da es keine abstrakte Klasse oder so ist.

Eine exaktere Spezifizierung wäre denkbar, aber da fällt mir im Augenblick nichts passendes ein. Das Problem dabei mag sein, dass ich da ja im Projekt die Spezifizierung bereits sehr stark mit ins Interface hab laufen lassen. Das ist vielleicht bereits mein Fehler und der Fehler der entsprechenden Quellen, die ich bisher so gesehen habe? So ist es ja bei den ganzen anderen (non EE) Interfaces und Klassen wie z.B. List -> ArrayList oder Map -> HashMap, wo bei der Implementierung eine genauere Spezifikation angegeben wurde (weil z.B. über Hashcodes eine Map strukturiert wird).

Nur eben ist das eben der "DocumentService".

Mag sein, dass ich jetzt hier auch einfach den Wald vor lauter Bäumen nicht sehe. Bin halt sonst im .Net Umfeld mit anderen Namens-Konventionen unterwegs. (Da wäre es dann halt einfach ein IDocumentService und DocumentService.)

Vielen Dank schon jetzt für eure Sichten auf dieses Thema.
 

mrBrown

Super-Moderator
Mitarbeiter
Ich persönlich habe mich da in den meisten Fällen mit *Impl abgefunden, wenn es nicht eine spezielle Implementation des Interfaces ist, die dann einen "sprechenderen" Namen bekommen.

Inwieweit hast du die Spezifizierung schon sehr im Interface?
 
K

kneitzel

Gast
Danke schon einmal für eure Antworten.

Das mit der "Spezifizierung sehr im Interface" ist evtl. blöd ausgedrückt. Durch die Vorgaben ist halt schon recht klar, was da abgebildet werden soll. Also der DocumentService aus dem Buch wäre halt ein Service, mit dem man Documents suchen kann. Sprich da sind dann Funktionen definiert a.la "Documents[] getDocumentsByType(Type type)", "Document getDocument(String id)", ...
Und das wird dann halt im Detail implementiert. Und das dann auch noch sehr allgemein, d.h. woher die Dokumente kommen ist auch per DI vorgegeben.

Bei einem DataAdapter wird es ja wieder einfach. Da kann ich dann XmlFileDataAdapter, MySQLDataAdapter, PostgreSQLDataAdapter, .... haben. (Und da kann man dann auch den Sinn der DI recht gut erkennen. Da macht es ja auch wirklich Sinn, denn jemand anderes mag dann z.B. ein OracleDataAdapter beisteuern). Wobei das Beispiel evtl. auch schon wieder blöd ist, da es hier auch wieder andere Möglichkeiten gibt, unterschiedliche Datenbanken zu ermöglichen so ich das richtig verstanden habe. Aber da Java für mich nur eine Freizeit Aktivität ist und man ja nicht mit allem zeitnah spielen kann, ist das noch ein Bereich, in dem ich irgendwann mal etwas mehr recherchieren darf :)
 

mrBrown

Super-Moderator
Mitarbeiter
Weniger Spezifizierung geht ja für solche Interfaces nicht ;)

Bei dem DocumentService würd ich bei *Impl blieben, zumindest, solange es nur eine sinnvolle Implementation gibt. Die ganzen DataAdapter sind 'n gutes Beispiel, wann man dem speziellere Namen gibt.
 

InfectedBytes

Top Contributor
Mir persönlich gefällt ja der C# bzw. .NET ansatz.
Dort lässt man Interfaces typischerweise mit einem I beginnen (IList). Dementsprechend kann man auch eine Implementierung haben, welche dann eben nur List heißt.
 

Joose

Top Contributor
Ich persönlich mag ebenfalls den .NET Ansatz.
Aber trotzdem verwende ich in Java die Variante mit dem Postfix "Impl", da dieser (in der Java-Welt) eher akzeptiert ist als ein Interface mit dem Prefix "I". Wobei sich diese nicht wirklich unterscheiden ;)
 

Ähnliche Java Themen

Neue Themen


Oben