对于任何程序员、架构师来说,最艰巨的任务之一就是理解他人的代码。
例如,我是一名承包商,受雇来快速挽救一些项目。修复错误,计划全局重构,因此我需要最有效的方式来理解代码。概念列表是什么,它们的优先级和最佳工具是什么?
据我所知:逆向代码工程以创建对象模型(为每个包创建图表不是那么方便),创建序列图(该工具以 Debug模式连接到系统并从运行时生成图表)。一些可视化技术,使用一些工具不仅可以与 .java
一起工作,还可以与例如JPA
实现者,例如 Hibernate
。不是为所有代码库生成图表,而是添加一些类,然后添加它使用的类。
Sparx Enterprise Architect 是逆向工程的最新技术水平还是远非如此?还有其他更好的工具吗?理想情况下,该工具可以让我理解代码,就像我自己编写代码一样:)
最佳答案
本书Object-Oriented Reengineering Patterns详细处理这个问题。不幸的是,没有附带 Elixir :-)
但是,它列出了许多用于接管遗留代码的有用技术。简而言之
- 至少采访一些最初的开发者(如果他们还在)
- 开发历史:阶段、发布
- 现状
- 团队社会结构、政治、动态:人们何时以及为何加入和离开
- 错误:典型的、最简单的、最难的
- 代码质量:最干净/最丑陋的部分
- 配置数据:形式、内容和用途
- 单元/集成/手册/...测试用例和数据
- SCM分支结构及使用
- 文档:在什么地方记录了什么,它是最新的吗
- 外部接口(interface)联系人
- 在演示过程中观察开发者/用户以找到
- 主要特点
- 典型用例
- 使用轶事
- 好/坏,缺少/多余的功能
- “在一小时内阅读所有代码”
- 获取类层次结构、接口(interface)的高级 View
- 如果需要,可以参加多个 session
- 识别大型结构(这些通常包含重要功能)
- 寻找设计模式
- 检查评论(它们可以揭示很多信息,但也可能具有误导性)
- 略读文档(如果有的话)
- 仅记录特定类型文档的可用性,例如规范、UML 图、Wiki、Javadoc 等。
- 有用吗,为什么(没用)
- 它是最新的吗
关于java - 代码理解、逆向工程、最佳概念和工具。 java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2658133/