2016-11-20 5 views
2

Angenommen, ich habe eine Schnittstelle wie folgt.Sollten Implementierungsmethoden JavaDoc-Kommentar haben, wenn die Schnittstelle, die sie implementieren, JavaDoc-Kommentar hat

public interface MyInterface{ 

/** 
* This method prints hello 
*/ 
    void sayHello(); 

    /** 
    * This method prints goodbye 
    */ 
    void sayGoodBye(); 
} 

Eine konkrete Klasse implementiert diese Methoden. Nun müssen die Methoden in der konkreten Klasse die Javadocs zusätzlich zu ihrer Methodendefinition definieren? Ich sehe, dass einige Leute die gleiche Javadoc-Definition in die implementierten Methoden der konkreten Klasse kopieren. Ich sehe das nicht als eine gute Übung, denn wenn wir die Definition des Dokuments ändern müssen, müssen wir es an mehreren Stellen ändern.

Was ist die Standardpraxis dafür?

+0

In der Schnittstelle, wo Sie Methoden deklarieren können den Überblick haben, was die Methode tut. In der Implementierung können Sie bei Bedarf eine schrittweise Erklärung der Methode erhalten, um zu ermitteln, was genau die Methode tut. Im Idealfall, wenn Sie den richtigen Kodierungsstandard verwenden, ist es nicht erforderlich, eine solche detaillierte Erklärung zu geben. – Raghuveer

+0

Willst du sagen Interface-Methode Javadocs sollte kurz sein? – DesirePRG

+0

ja, aber auch beschreibend genug, um dem Leser verständlich zu machen, was die API tun soll. – Raghuveer

Antwort

3

Sie können {@inheritDoc} verwenden, um die Dokumentation der Schnittstelle zu übernehmen, und nur zusätzliche Kommentare hinzufügen, wenn Sie sie für relevant und relevant halten, zusätzliche Informationen für die spezifische Implementierung.

Verwenden Sie @inheritDoc nur dann, wenn Sie der ursprünglichen Oberklasse/Schnittstellendokumentation hinzufügen möchten. Wenn Sie nur eine Kopie wünschen, wird Javadoc dafür sorgen. Es wird sehen, dass die Superklassen-Dokumentation für die überschriebene Methode der Unterklasse gilt, da die Unterklasse keine zusätzliche Dokumentation zur Verfügung stellt.

{@inheritDoc} - Vererbt (Kopien) Dokumentation von der "nächsten" vererbbaren Klasse oder implementierbaren Schnittstelle in den aktuellen Dok-Kommentar an der Position dieses Tags. Auf diese Weise können Sie allgemeinere Kommentare in der Vererbungsstruktur schreiben und den kopierten Text umschreiben.

http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/javadoc.html#@inheritDoc

+1

Sie müssen das nicht tun. Und das hat auch wenig Sinn, es sei denn, Sie wollen Material hinzufügen, das für die Implementierung spezifisch ist ... und sowohl das geerbte als auch das hinzugefügte Material im selben Textblock haben. –

2

tun Nun sind die Methoden in der konkreten Klasse muss auch die javadocs auf ihrer Methodendefinition definieren?

Nein. Es ist bereits angegeben. Die konkreten Methoden sollten genau das tun, was die Schnittstelle Javadoc sagt und sonst nichts.

Ich sehe, dass einige Leute nur die gleiche Javadoc-Definition in die implementierten Methoden der konkreten Klasse kopieren. Ich sehe das nicht als eine gute Übung, denn wenn wir die Definition des Dokuments ändern müssen, müssen wir es an mehreren Stellen ändern.

Sie haben Recht. Sie sollten das nicht tun.

Sie sollten nicht @inheritDoc entweder verwenden, außer in dem sehr seltenen Fall, wo die konkrete Methode mehr Beschreibung benötigt, als bereits in der Schnittstelle Javadoc.Die meiste Zeit sollten Sie keine Javadoc bieten überhaupt, nicht einmal:

/** 
* 
*/ 
0

Sie sollte Kommentar für die konkrete Umsetzung zur Verfügung stellen, wenn

  • der Kommentar für die Schnittstelle so allgemein ist es tut die konkrete Umsetzung nicht ausreichend spezifizieren
  • die konkrete Umsetzung entspannt alle Voraussetzungen der Schnittstelle
  • die konkrete Umsetzung hat strenger (enger) post co Bedingungen als die Schnittstelle.
Verwandte Themen