我注意到doxygen使用graphviz库来创建图表。您是否曾经使用过graphviz来生成文档?在doxygen之外的文档编制中,学习graphviz是否值得?抑或是我最好坚持使用像Visio这样的标准数据建模工具?
我知道它作为绘图库的优点,但对于尝试表示更复杂的UML(或类似)图表,仍然值得考虑吗?
我注意到doxygen使用graphviz库来创建图表。您是否曾经使用过graphviz来生成文档?在doxygen之外的文档编制中,学习graphviz是否值得?抑或是我最好坚持使用像Visio这样的标准数据建模工具?
我知道它作为绘图库的优点,但对于尝试表示更复杂的UML(或类似)图表,仍然值得考虑吗?
Graphviz是一种非常简单的语言/格式,用于创建图形。如果该功能对您足够,我会推荐使用它(它非常容易学习,我估计学习时间最多只需要1小时)。
如果您只是想创建类似Doxygen的继承/协作图表,值得研究一下可以自动完成此操作的IDE工具。对于从头开始或手动编写文档,我使用OmniGraffle(因为我使用Mac),非常推荐。
然而,GraphViz和DOT也可以非常方便,不仅用于文档编写,还可用于调试和代码理解,特别是对于数据结构。通常我不手动编写DOT,但自动生成的DOT可以节省很多时间。
我发现GraphViz非常有用的其中一个场景是了解和调试二叉搜索树算法。我开发了CHDataStructures.framework,这是一个开源的Objective-C框架,其中包括几种不同类型的BST。我在父类上实现了两个方法:-(NSString*)dotGraphString
和每个子类上的-(NSString*)dotGraphStringForNode:
。在大约30-40行代码(大部分在CHAbstractBinarySearchTree.m
底部)中,我增加了逐步遍历二叉树并创建DOT表示形式的功能,包括平衡信息、将节点着色为红色或黑色等(通过小心设置,您可以轻松地表示空的哨兵节点,并按正确的排序顺序显示树)。
在我的测试代码中,每次修改树后,我都会调用 -dotGraphString
并将结果保存到一个.dot文件中,在那里停下来断点,然后使用GraphViz打开该文件,当文件更新时,GraphViz会聪明地重新渲染DOT图。这种方法使得在树中发生的情况以及发现实现给定算法中的错误变得非常容易。这种方法可以相对容易地适应各种数据结构,并且通常比创建用于可视化结构的UI要快得多和容易得多。
Graphviz不能像Visio一样为您提供流畅的图形界面,但它可以生成排版良好的图表。我发现当我通过程序自动生成图表时(如使用doxygen),它非常有用。
Graphviz是最有用的用于通过dot程序生成依赖关系图的工具。 Visitors使用它来可视化网站访问情况;Hadoop/Cascading使用它来可视化Map-Reduce作业的执行计划。
是的,graphviz很容易学习,并且可以从程序中轻松使用。
此外,还可以看看yEd,这是一个处理图形的好工具。与Visio不同的是,它可以加载和保存各种易于手动编辑或程序生成的格式。自动布局功能也非常不错。
我偶尔用它来说明状态机。graphviz非常适合这个。
我们使用Graphviz自动生成对象图来作为我们UML验证工具的反馈。我们非常满意结果,因为我们可以提供一个图形化的结果而不必担心布局问题。