Wenn Sie nur über das Erstellen von Vererbungs-/Kollaborationsdiagrammen wie Doxygen sprechen, lohnt es sich, IDEs zu untersuchen, die das automatisch für Sie erledigen. Ich benutze OmniGraffle (seit ich auf einem Mac bin), die ich sehr empfehlen kann.
Aber GraphViz und DOT kann wirklich praktisch sein, nicht nur für die Dokumentation, sondern auch für das Debuggen und Code-Verständnis, insbesondere für Datenstrukturen. Ich schreibe DOT im Allgemeinen nicht von Hand, aber automatisch generierte DOT kann den minimalen Aufwand wert sein.
Einer der Orte, die ich gefunden habe GraphViz extrem nützlich ist zum Verständnis und Debuggen von binären Suchbaum-Algorithmen. Ich entwickle CHDataStructures.framework, ein Open-Source-Objective-C-Framework, das mehrere Varianten von BSTs enthält. Ich habe zwei Methoden implementiert: -(NSString*)dotGraphString
für die Elternklasse und -(NSString*)dotGraphStringForNode:
für jede Kindklasse. In etwa 30 bis 40 Codezeilen (die meisten davon am Ende von CHAbstractBinarySearchTree.m
) fügte ich die Fähigkeit hinzu, einen Binärbaum iterativ zu durchlaufen und eine DOT-Repräsentation davon zu erstellen, einschließlich Balancing-Informationen, Knoten rot oder schwarz färben usw. (Mit ein wenig Sorgfalt können Sie einfach null Sentinel-Knoten darstellen und den Baum in ordnungsgemäß sortierter Reihenfolge anzeigen.)
In meinem Testcode, nach jeder Änderung des Baumes, rief ich - dotGraphString
an und speicherte das Ergebnis in einem .dot Datei, wurde dort mit einem Haltepunkt angehalten und dann diese Datei mit GraphViz geöffnet, das intelligent genug ist, um das DOT-Diagramm erneut zu rendern, wenn die Datei aktualisiert wird. Dieser Ansatz machte es erheblich einfacher zu sehen, was in der Baumstruktur vor sich ging, und Bugs in meiner Implementierung eines bestimmten Algorithmus zu erkennen. Dieser Ansatz kann ziemlich einfach für verschiedene Arten von Datenstrukturen angepasst werden und ist im Allgemeinen viel schneller und einfacher als das Erstellen einer UI nur zum Visualisieren der Struktur.
Ich stimme zu. Ich weiß nichts über Dokumentationszwecke, aber ich konnte in einer halben Stunde nützliche Graphen programmatisch erzeugen. Mein Eindruck ist, dass eine Stunde für die Grundlagen wahrscheinlich angemessen ist. –
Sehr schlechte Dokumentation, fehlt ganz auf Beispiele ... Ich glaube nicht, dass Sie wirklich nur eine Stunde brauchen. Ich versuche den ganzen Tag, um ein paar einfache UML-Dinge zu erledigen. – Thanks
Richtiges Werkzeug für den Job: Graphviz wird schrecklich schrecklich sein, um zu versuchen, UML zu machen, weil das nicht dafür gedacht ist. Wenn Sie in der Lage sein, schnell die Beziehungen zwischen den Elementen zu zeigen, wird Graphviz groß sein. Wenn Sie Gegenstände präzise platzieren müssen, werden Sie das Leben hassen. –