Ich entwickle eine API mit vielen identisch benannten Methoden, die sich nur durch die Signatur unterscheiden, was ich denke, ziemlich häufig ist. Sie alle machen dasselbe, außer dass sie verschiedene Werte durch Standardwerte initialisieren, wenn der Benutzer dies nicht spezifizieren möchte. Als ein verdauliches Beispiel betrachtenJavadoc Wiederverwendung für und überladene Methoden
public interface Forest
{
public Tree addTree();
public Tree addTree(int amountOfLeaves);
public Tree addTree(int amountOfLeaves, Fruit fruitType);
public Tree addTree(int amountOfLeaves, int height);
public Tree addTree(int amountOfLeaves, Fruit fruitType, int height);
}
Die wesentliche Aktion, die von all diesen Methoden durchgeführt wird, ist das gleiche; Ein Baum ist im Wald gepflanzt. Viele wichtige Dinge, die Benutzer meiner API über das Hinzufügen von Bäumen wissen müssen, gelten für alle diese Methoden.
Idealerweise möchte ich ein Javadoc Block schreiben, die von allen Methoden verwendet:
/**
* Plants a new tree in the forest. Please note that it may take
* up to 30 years for the tree to be fully grown.
*
* @param amountOfLeaves desired amount of leaves. Actual amount of
* leaves at maturity may differ by up to 10%.
* @param fruitType the desired type of fruit to be grown. No warranties
* are given with respect to flavour.
* @param height desired hight in centimeters. Actual hight may differ by
* up to 15%.
*/
In meiner Phantasie könnte ein Werkzeug auf magische Weise anwenden, welche der @params wählen, um jede der Methoden und Auf diese Weise können Sie gute Dokumente für alle Methoden gleichzeitig erstellen. Wenn ich es richtig verstehe, kann ich im Wesentlichen nur & kopieren den gleichen javadoc Block fünf Mal, mit nur einer leicht abweichenden Parameterliste für jede Methode. Das klingt für mich umständlich und ist auch schwer zu pflegen.
Gibt es einen Weg dahin? Eine Erweiterung von Javadoc, die diese Art von Unterstützung bietet? Oder gibt es einen guten Grund, warum das nicht unterstützt wird, was ich verpasst habe?
Große Frage und ausgezeichnet beschrieben, danke. –