Ich bin gerade in einem Laborhandbuch an der Universität auf Folgendes gestoßen:
Sie müssen die Schnittstellen der Klassen studieren, indem Sie das Javadoc für sie generieren, damit Sie wissen, welche Operationen bereitgestellt werden (Sie können sich den Code ansehen, aber wenn Sie wie hier den Code eines anderen verwenden, sollten Sie nicht über das Javadoc arbeiten den Code wann immer möglich).
Ich verstehe nicht, warum das so ist; da der Javadoc veraltet sein könnte oder die Funktion des Codes schlecht beschreiben könnte. Sicherlich ist es am besten, sich den Quellcode anzuschauen und die Javadoc-Kommentare zu lesen?
Gibt es einen Grund, warum oder einen Fall, in dem nur das Javadoc gelesen wird, das Beste ist?
source-code
comments
javadocs
Todd Davies
quelle
quelle
Antworten:
Bei der Empfehlung geht es wahrscheinlich eher um die Programmierung auf eine Schnittstelle als um die Implementierung .
Sicher, wenn Sie Zugriff auf den Code haben, hindert Sie nichts daran, die Implementierung zu betrachten, um zu verstehen, wie sie funktioniert. Sie sollten jedoch immer sicherstellen, dass das Wie Ihren API-Verbrauch nicht beeinflusst.
Wenn Sie eine API verwenden, arbeiten Sie gegen eine Abstraktion. Versuchen Sie, sich nur mit dem zu befassen, was die API bietet (der Vertrag) und nicht mit dem Wie (der Implementierung).
Dies liegt daran, dass nicht garantiert werden kann, dass sich die Implementierung einer API nicht drastisch von einer Version zur nächsten ändert, selbst wenn der Vertrag unverändert geblieben ist.
quelle
AddOnlyDictionary
die verspricht, dieDictionary
könnten und die Benutzer beim Schreiben von Code, der das alte Verhalten nicht benötigte, auf das neue migrieren könnten. Beachten Sie, dass die Möglichkeit, die Additionsreihenfolge beizubehalten, im Allgemeinen nicht für Code relevant ist, der eine von einer anderen Stelle empfängtDictionary
(da bei einem von einer anderen Stelle empfangenen Wörterbuch möglicherweise irgendwann ein Element gelöscht wurde), sondern nur für Code, der Instanzen über den Konstruktor erstellt. Auf jeden Fall, wenn ein Wörterbuch eine Garantie für zusätzliche Bestellungen nichtNeben dem bereits in der vorherigen Antwort erläuterten Unterschied zwischen der Schnittstelle und der Implementierung gibt es noch einen weiteren wichtigen Aspekt: die Komplexität .
Reale Systeme sind normalerweise komplex. Wenn Sie anfangen, den Code einer Klasse zu lesen, werden Sie feststellen, dass Sie auch den Code einer anderen Klasse lesen sollten, dann einer anderen usw. Ein paar Stunden später verlieren Sie sich einfach in all der Komplexität und Ich werde mich nicht erinnern, wer was und in welchen Fällen anruft.
Wenn Sie nur die Kommentare der Benutzeroberfläche verwenden, verringern Sie all diese Komplexität. Es könnte sein, dass unter der Haube alles einfach ist. Oder es kann sein, dass unter der Haube Dutzende oder Hunderte von Klassen miteinander interagieren, was es praktisch unmöglich macht, das gesamte Bild im Kopf zu behalten.
Sie können ein Experiment durchführen.
Finden Sie einen Teil in OpenCV, der Sie interessiert. Lesen Sie die Schnittstellendokumentation durch. Wie lange dauert es, um die Grundlagen zu verstehen und die Bibliothek effektiv zu nutzen?
Jetzt sehen Sie die Implementierung . Wie viele Klassen werden direkt von der Schnittstelle aufgerufen? Wie viele Klassen werden von jeder dieser Klassen aufgerufen? Wie viele Codezeilen gibt es? Wie viele Methoden? Wie lange würde es dauern, bis Sie den gesamten Quellcode untersucht haben, bevor ein Stapelüberlauf in Ihrem Gehirn auftritt?
quelle
Obwohl Sie völlig richtig sind, dass JavaDoc möglicherweise veraltet oder schlecht ist, hat es in der Regel ein besseres Format zum Lesen im Großhandel als Code in einer IDE. Und was noch wichtiger ist, es ist in natürlicher Sprache. Das ist in zwei Fällen wichtig:
Trotzdem glaube ich ziemlich stark an lesbaren Code. Für erfahrene Entwickler erwarte ich, dass das Lesen des Codes fast immer ein besserer Ansatz ist, wenn diese Option verfügbar ist.
quelle