Namenskonventionen für die Java-Schnittstelle [geschlossen]

Ich arbeite an einer Java-Web-App, die Spring für die Abhängigkeitsinjektion und JMock zum Verspotten dieser Abhängigkeiten in unseren Unit-Tests verwendet.

Derzeit ist unser Team an einem Punkt angelangt, an dem wir einige unterschiedliche Meinungen dazu haben, wie bestimmte von uns verwendete Schnittstellen zu benennen sind. Wir haben kein Problem damit, die Schnittstellen in unserer Domäne zu benennen, die mehrere Implementierungen haben, das ist einfach. Wenn es jedoch um Schnittstellen geht, für die wir nur eine Implementierung haben und beabsichtigen, in Zukunft nur eine Implementierung zu haben, haben wir einen Haken bekommen.

Der Grund, warum wir solche Schnittstellen haben, ist nur zum Verspotten gedacht. Wir haben beispielsweise Services und Repositorys, die wir in unseren Unit-Tests verspotten, und diese Services werden als "DocumentMappingService" oder für Repositorys als "EmployeeRepository" bezeichnet. Im Moment stellen einige der Jungs dem zugehörigen Schnittstellennamen lediglich ein "I" voran, d. H. "IDocumentMappingService" und "IEmployeeRepository". Andere benennen die Schnittstelle wie oben beschrieben und fügen nach dem Schnittstellennamen für die implementierende Klasse ein "Impl" an.

Die dritte "Fraktion" ist der Ansicht, dass beide Optionen schlecht sind. Wenn man sich Literatur wie die bekannte "Anwachsende objektorientierte Software, die von Tests geleitet wird" ansieht, könnte man annehmen, dass beide zuvor genannten Optionen schlecht sind und dass der Schnittstellenname den Vertrag und den Namen der implementierenden Klassen klar definieren sollte sollte klar angeben, wie dieser Vertrag umgesetzt wurde. In dem Fall, den ich oben erwähnt habe, haben wir dies jedoch als ziemlich schwierig empfunden.

Ich hatte gehofft, dass jemand da draußen ein ähnliches Problem hatte und einige Vorschläge dazu hat, welche Option die beste ist und warum. Wenn Sie der Meinung sind, dass die Optionen "I" und "Impl" beide schlecht sind, schlagen Sie bitte eine bestimmte alternative Konvention vor.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage