代码理解、逆向工程、最佳概念和工具。JAVA
对于任何程序员来说,架构师最苛刻的任务之一就是理解他人的代码 例如,我是一名承包商,被雇来迅速营救某个项目。修复bug,计划全局重构,因此我需要最有效的方法来理解代码。概念列表、它们的优先级和用于此的最佳工具是什么 据我所知:反向代码工程创建对象模型(为每个包创建图表并不那么方便),创建序列图(该工具以调试模式连接到系统,并从运行时生成图表)。一些可视化技术,使用一些工具不仅可以使用代码理解、逆向工程、最佳概念和工具。JAVA,java,uml,reverse-engineering,Java,Uml,Reverse Engineering,对于任何程序员来说,架构师最苛刻的任务之一就是理解他人的代码 例如,我是一名承包商,被雇来迅速营救某个项目。修复bug,计划全局重构,因此我需要最有效的方法来理解代码。概念列表、它们的优先级和用于此的最佳工具是什么 据我所知:反向代码工程创建对象模型(为每个包创建图表并不那么方便),创建序列图(该工具以调试模式连接到系统,并从运行时生成图表)。一些可视化技术,使用一些工具不仅可以使用.java,还可以使用JPA等实现工具,如Hibernate。不是为所有的代码库生成图表,而是添加一些类,然后添加
.java
,还可以使用JPA
等实现工具,如Hibernate
。不是为所有的代码库生成图表,而是添加一些类,然后添加它使用的类
Sparx Enterprise Architect是逆向工程领域的最新技术还是相去甚远?还有其他更好的工具吗?理想情况下,该工具可以让我像自己编写代码一样理解代码:)到目前为止,最重要的工具是你的耳朵、舌头和喉咙。询问熟悉代码的人——他们将能够帮助您更好地理解其总体架构,而不是任何软件工具 自动逆向工程的完整UML模型通常几乎毫无用处,因为它们无法区分重要的抽象和实现细节——这是此类模型的全部要点 当您调查细节时,软件工具在回答非常具体的问题时更有用,例如“此方法从何处调用?”或“什么类实现此接口”——任何好的IDE都可以做到这一点。调试器也可以提供帮助—在代码的关键点放置断点,并在遇到断点时查看调用堆栈通常非常有启发性。这本书详细介绍了这一点。不幸的是,没有附带银弹:-) 然而,它列出了许多接管遗留代码的有用技术。简言之
- 至少采访一些最初的开发者(如果他们还在的话)关于
- 开发历史:阶段、版本
- 现状
- 团队社会结构、政治、动态:人们何时加入和离开以及为什么加入和离开
- 臭虫:典型的,最简单的,最难的
- 代码质量:最干净/最丑陋的零件
- 配置数据:形式、内容和用途
- 单元/集成/手动/。。。测试用例和数据
- SCM分支结构和用法
- 文件:记录了什么,在哪里,是最新的
- 外部接口联系人
- 在演示过程中观察开发人员/用户以查找
- 主要特征
- 典型用例
- 使用轶事
- 好/坏、缺失/多余功能
- “在一小时内读取所有代码”
- 获取类层次结构、接口的高级视图
- 如果需要,参加多个会议
- 确定大型结构(这些结构通常包含重要功能)
- 寻找设计模式
- 检查评论(它们可能会泄露很多信息,但也可能会产生误导)
- 略读文件(如有)
- 只需记录特定类型文档的可用性,例如规范、UML图、Wiki、Javadoc等
- 它有用吗?为什么
- 它是最新的吗
- 当光标放置在标识符中时,Shift-F2会显示该标识符的Javadoc(如果有的话)。很适合航海
- 将鼠标悬停在标识符上会弹出一个包含Javadoc的框(如果有的话)。用于在编写时进行提醒,例如方法调用
- 声明视图显示定义光标所在关键字的源。这将在光标移动时更新
- F3转到当前标识符的定义
- 标识符上的Ctrl-T在弹出窗口中显示所有子类和实现。在处理接口时非常有用
- 标识符上的F4在面板中显示该标识符的实现层次结构,可以对其进行导航。了解事物之间的联系非常有用。这包括类和接口
唯一的问题是它真的太贵了所以这个价格对我来说是个止损 我对整个UML(包括Java的反向工程)使用Enterprise Architect,它工作得非常完美。并没有提取高级架构,但它确实使您更容易在Java代码中攀爬:我们的。这将读取源代码(以及支持的类文件),并生成Javadoc样式的文档以及双向超链接到Javadoc信息的源文本。
(我是它背后的负责人之一)。@TofuBeer:是的,对不起,我搞错了链接;答案也修正了。我要编辑链接。。。但我想我应该先确定它是正确的:-)