Если вы просто говорите о создании диаграмм наследования / совместной работы, как это делает Doxygen, стоит изучить среды разработки, которые сделают это для вас автоматически. Для документации с нуля или с ручной настройкой я использую OmniGraffle (так как я на Mac), который я настоятельно рекомендую.
Однако GraphViz и DOT могут быть очень полезны не только для документации, но и для отладки и понимания кода, особенно для структур данных. Обычно я не пишу DOT вручную, но автоматически сгенерированный DOT может стоить минимальных усилий.
Одно из мест, где я нашел GraphViz чрезвычайно полезным, - это понимание и отладка алгоритмов двоичного дерева поиска. Я разрабатываю CHDataStructures.framework , среду Objective-C с открытым исходным кодом, которая включает в себя несколько разновидностей BST. Я реализовал два метода: -(NSString*)dotGraphString
в родительском классе и -(NSString*)dotGraphStringForNode:
в каждом дочернем классе. Примерно в 30-40 строках кода (большая часть - внизу CHAbstractBinarySearchTree.m
), я добавил возможность итеративного обхода двоичного дерева и создания его точечного представления, включая информацию о балансировке, окрашивание узлов в красный или черный цвет и т. Д. . (С некоторой тщательностью вы можете легко представить нулевые сторожевые узлы и отобразить дерево в надлежащем отсортированном порядке.)
В моем тестовом коде после каждой модификации дерева я вызывал - dotGraphString
и сохранял результат в файле .dot, останавливался там с точкой останова, затем открывал этот файл с помощью GraphViz, который достаточно умен, чтобы -отобразить график DOT при обновлении файла. Благодаря такому подходу стало намного проще видеть, что происходит в дереве, и обнаруживать ошибки в моей реализации данного алгоритма. Этот подход может быть довольно легко адаптирован для различных типов структур данных и, как правило, гораздо быстрее и проще, чем создание пользовательского интерфейса только для визуализации структуры.