我应该如何可视化代码的结构?[已关闭]

我有一个用Java编写的应用程序。In 存储在多个文件中。它使用具有不同方法的不同类。代码又大又复杂。我认为如果我有一个代码的图形模型(某种有向图),那么理解代码会更容易。是否有一些标准方法可以可视化代码。我正在考虑UML的使用(不确定这是一个正确的选择)。任何人都可以推荐我一些东西吗?

添加:

我考虑两种可能性:

  1. 手动创建图形(显式)。
  2. 以自动方式创建图形。例如,使用一些工具读取可用代码并生成一些描述代码结构的图形。

添加 2:

如果能有免费的东西就好了。


答案 1

我尝试使用许多UML工具,发现大多数UML工具中的逆向工程功能对理解代码没有帮助。他们专注于设计需求和逆向工程能力,通常最终只会显示大量无用信息的大量图片。当我在Microsoft Office代码库上工作时,我发现使用笔和纸比典型的设计/建模工具更有用。

您通常希望通过多种方式考虑执行此操作:

  1. 使用你的大脑:其他人提到了它 - 实际上试图理解代码库是无可替代的。您可能需要记下笔记,稍后再参考。工具可以提供帮助吗?绝对。但不要指望他们能为你做大部分工作。
  2. 查找文档并与同事交谈:没有比让一些源代码描述代码库中的主要概念更好的方法了。如果你能找到人来帮助你,拿一支笔和纸,去找他,做很多笔记。对方要烦多少?在开始时 - 尽可能适合您的工作,但数量不会太少。
  3. 想想工具:如果你是项目的一部分的新手 - 你将花费大量时间来理解代码,所以看看你能自动得到多少帮助。有好的工具和坏的工具。首先尝试找出哪些工具具有可能对您有帮助的功能。正如我上面提到的,普通的UML工具更侧重于建模,似乎并不适合你。
  4. 时间与成本:当然,免费是伟大的。但是,如果一个免费工具没有被很多人使用 - 可能是该工具不起作用。有许多工具只是作为对可以完成的探索而创建的,但它们并没有真正的帮助,因此只是免费提供,希望其他人会采用它。另一种思考方式,决定你的时间值多少钱 - 花一两天时间买一个工具为你工作可能是有意义的。

到达那里后,在尝试理解项目时请记住以下几点:

  1. Mile High View:分层架构图对于了解项目中的主要概念如何相互关联非常有帮助。像LattixArchitexa这样的工具在这里真的很有帮助。
  2. 核心:试着弄清楚代码在主要概念方面是如何工作的。类图在这里非常有用。笔和纸在这里经常工作,但工具不仅可以加快过程,还可以帮助您保存和共享此类图表。我认为AgileJArchitexa是你最好的选择,但你的平均UML工具通常足够好。
  3. 关键用例:我建议至少跟踪应用的一个关键用例。您可能可以从团队中的任何人那里获得最重要的用例,并且逐步完成它将非常有帮助。大多数IDE在这里都非常有用。如果您尝试绘制它们,那么序列图是最合适的。对于这里的工具,我认为KeepejJDeveloperArchitexa是你最好的选择。

注意:我是Architexa的创始人 - 我们构建工具来帮助您理解和记录Java代码,但我在上面试图保持公正。我的目的是建议工具和选项,因为这是我作为博士学位的一部分所关注的。


答案 2

你应该使用的最重要的工具是你的大脑,它是免费的。

没有理由你必须使用任何类型的标准可视化方法,你可以使用任何你喜欢的媒体。纸张,白板,Photoshop,visio,PowerPoint,记事本:所有这些都是有效的。绘制类,对象,方法,属性,变量的图表 - 任何您认为有用的内容,以便了解应用程序。观众不仅是您团队的其他成员,也是您自己。创建便于您查看和快速理解的图表。将它们张贴在您的工作区周围,并定期查看它们,以提醒自己在构建时的整体系统架构。

UML 和其他代码文档标准是可以执行的关系图类型以及应考虑包含的信息的良好指南。但是,对于大多数应用程序来说,这是过分的,基本上对于没有标准就无法承担个人文档责任的人来说, 它已经存在了。如果您严格遵循UML,您最终会在文档上花费太多时间,而不是创建应用程序。


推荐