练习 1.4:解决结构化问题
该练习假设您已经完成了练习 1.1:导入需要的资源。在练习 1.4 中,您首先阅读用户场景。然后,您担任用户场景中描述的软件设计人员角色,并使用您在练习 1.1 中导入的项目来完成练习。
用户场景
要专门在代码中查找循环依赖性,设计人员运行只寻找这种依赖关系的结构化分析代码复审。代码复审确实找到一些循环依赖性,而设计人员注意到它们中有几个存在快速修正。快速修正是提供的、用于修复常见发现结果的自动方法。为了重构代码消除循环依赖,设计人员将快速修正应用于一个循环依赖性。
在最后的练习中,设计人员运行代码复审并修正一个发现结果。
练习
在此练习中,您执行以下任务:
- 运行代码复审,查找循环依赖性。
- 识别循环依赖性何时有提供的快速修正。
- 应用快速修正来解决循环依赖性:
- 查看一列要作出的更改。
- 查看每个更改的现有代码和重构代码。
- 收到已经应用快速修正的确认。
选择代码复审来查找循环依赖性
要选择查找循环依赖性的代码复审:
- 在“代码复审”视图中的工具栏上,单击管理规则图标
。

- 在选择代码复审列表中,单击结构化分析代码复审。
- 展开结构化分析文件夹,然后清除除了循环依赖性子文件夹之外的所有其他子文件夹。
- 展开循环依赖性子文件夹,查看将在代码复审中应用的规则,如以下屏幕捕获所示。单击确定。

选择要复审的代码库
要选择工作区作为要复审的代码库:
- 在“代码复审”视图中的工具栏上,单击复审图标(
)> 复审工作区。
运行代码复审
当选择要复审的代码库后,代码复审就开始运行。您可以通过检查视图右下角中的进度条,来跟踪它的状态。
查看找到的循环依赖性的列表
代码复审找到四个循环依赖性,如下一个屏幕捕获所示。循环依赖性是应该避免的、不理想的反模式。在循环依赖性中,一组对象彼此相连,这样对任何对象的更改都可能会影响所有其他对象。

- 展开结构化分析:循环依赖性文件夹,并注意到它包含的以下发现结果,如下一个屏幕捕获所示:

- 每个循环依赖性都被指定了最高的严重性级别 - 问题(
)。
- 循环依赖性中的两个有快速修正(
)来消除依赖关系。
- 右键单击列表中的第三个发现结果。快速修正弹出菜单选项根据解决方法的不同而有所不同。对于您选择的循环依赖性,修正是将静态字段从基类移动到另一个类,从而消除循环依赖性。
- 单击快速修正:从基类移动静态字段。

应用快速修正
您选择的循环依赖性的快速修正是将静态字段从基类移动到另一个类。您可以选择将字段移动到现有类或新类。
要将字段移动到新类:
- 在下一个屏幕捕获中,复审关于您将修正的循环依赖性(也称为对象结)的只读信息:
- 单击生成新的 Java 类并输入:
- src/ 作为源文件夹名称
- com.ibm.r2a.rules.rsa.examples 作为包名称
- Defaults 作为类名

- 单击预览来查看快速修正将更改的代码。
- 展开要执行的更改列表(如以下屏幕捕获所示),来查看快速修正确切地会对代码进行什么更改(在它将静态字段移到新类时)。

- 单击列表中的第四个更改(以 Font.java 开头)来查看代码的并列视图。原始代码在左边,而将由快速修正创建的重构代码在右边。

- 单击确定将快速修正应用于列表中所有选定的更改。
- 应用快速修正之后,您将看到一个选中标记表示确认,这样您就知道问题已解决。

您已经完成“练习 1.4:解决结构化问题”。
发挥快速修正的强大作用
为代码复审中一些常见的发现结果提供有快速修正。通过应用提供的快速修正,您有了解决循环依赖性的自动方法。您可以:
- 识别和评估循环依赖性。
- 使用自动快速修正快速地消除依赖关系。
- 查看快速修正确切地会对代码进行一列什么更改。
- 每次都一致地修正循环依赖性。
总结练习 1.4
您已经完成“练习 1.4:解决结构化问题”。在这个练习中,您执行了以下任务:
- 运行了代码复审来查找循环依赖性。
- 识别了循环依赖性何时有提供的快速修正。
- 应用了快速修正来解决循环依赖性:
- 查看了一列要作出的更改。
- 查看了每个更改的现有代码和重构代码。
- 收到了已经应用快速修正的确认。
通过回顾摘要中的学习目标来完成教程。