重构

概述

一般来讲,重构是指在不更改软件代码的行为的前提下重组并改进现有软件代码的过程。

EcoStruxure Machine Expert 中的重构为对象名称和变量名称的重命名提供了相应功能。它让您能够显示被更改的对象和变量的所有使用位置,并一次性对它们全部重命名或者仅单独命名个别者。您可以配置是否以及应在哪些位置发起重构询问。您可以显式使用命令重构 > 重命名

有关详细信息,另请参阅选项,重构

重命名命令

重构 > 重命名命令用于对对象名称和变量名称执行全局(项目范围内的)重命名。

如果将光标置于声明中的变量名称上,或者如果右键单击导航中的以下其中一个对象,此命令便会出现在上下文菜单中:

o函数

oPOU

oGVL

o方法

o属性

o设备

如果在用于单位换算的编辑器内选择了变量和单位换算,则此命令也可用。

在在线模式下,此命令不可用。

重命名步骤

在执行了重构 > 重命名命令后,会显示一个对话框。其中显示了相关名称的使用位置:在窗口右侧,显示具体的位置,在左侧,显示标记了相关对象的导航树。

您可以分别为每个位置选择以下命令:

o拒绝/接受此更改:拒绝/接受右窗口中的单个更改。

o拒绝/接受此对象:拒绝/接受相关对象中的所有更改。

o拒绝/接受整个项目:拒绝/接受项目中的所有更改。

接受的更改显示为黄色背景,拒绝的更改显示为灰色背景。

添加<变量>命令

重构 > 添加<变量>命令让您能够在 POU 中声明变量并在其不同的使用时段执行自动更新。

如果光标置于声明编辑器中,则此命令会出现在上下文菜单中或者出现在编辑 > 重构菜单中。自动声明对话框随即打开。

在单击确定从而确认自动声明对话框后,会打开重构对话框。它在左侧包含项目的树结构。使用新变量的 POU 在树中突出显示。您可以双击 POU,在对话框的右侧打开详细视图。在右侧的这个 POU 声明部分和实现中,新声明突出显示为黄色。

在决定要接受哪个位置的哪些更改之前,从右侧 POU 声明部分和实现上方的列表中选择合适的选项:

选项

描述

使用占位符文本添加输入

选择此选项后,每当实现代码中出现新变量时,就会插入标准占位文本 _REFACTOR_。您可以稍后搜索此标准文本,以便识别相应的位置。

添加具有以下值的输入

选择此选项后,每当实现代码中出现新变量时,就会插入初始化值。在选项添加具有以下值的输入右侧的文本框中输入初始化值。

如要接受或拒绝更改,右键单击更改的位置,或者在对话框左侧或右侧执行执行命令,如本章重命名步骤文段中所述。

变量添加示例

示例 1:

通过重构,fun 功能块接收包含初始化值 1 的新输入变量 input3。更改的影响如下:

重构前:

fun(a + b, 3, TRUE);
fun(input1:= a + b , input2 :=3 , inputx := TRUE);

重构后:

fun(a + b, 3, input3:=1, TRUE);
fun(input1:= a + b , input2 :=3 , input3:=_REFACTOR_,inputx := TRUE);

示例 2

通过重构,fun 功能块接收包含占位文本 _REFACTOR_ 的新输入变量 input3

重构前:

inst(input1 := a + b, input2 := 3, inputx := TRUE);
fun(a + b, 3, TRUE);

重构后:

inst(input1 := a + b, input2 := 3, input3 := _REFACTOR_, inputx := TRUE);
fun(a + b, 3, input3:=_REFACTOR_, TRUE);

删除<变量>命令

重构 > 删除<变量>命令让您能够从 POU 中删除输入或输出变量。该变量在 POU 的不同使用时段自动从 POU 删除。

如果光标置于声明编辑器中要删除的变量的标识符上,则此命令会出现在上下文菜单中,或者出现在编辑 > 重构菜单中。随即会打开一个对话框,其中提供了删除的相关信息。如果确认此消息,则会打开重构对话框。

如果接受重构对话框中提议的更改,则会在 POU 的不同使用时段,自动将相应的输入或输出变量从相应的 POU 删除。

注意: 在 CFC 中,仅去掉已删除输入或输出与功能块之间的连接。输入或输出自身则保留在图中。

ST 中变量删除示例

在 POU 中,重构会删除 input4 输入变量。该变量在 POU 的不同使用时段自动从相应 POU 删除:

删除前:

inst(input1 := a + b, input2 := 3, input4 := 1, input5 := TRUE);
fun(a + b, 3, 1, TRUE);

删除后:

inst(input1 := a + b, input2 := 3, input5 := TRUE);
fun(a + b, 3, TRUE);

更新引用引脚 命令

重构 > 更新引用引脚命令仅适用于 CFC 编辑器和 FBD/LD/IL 编辑器。它对应于复位引脚更新参数命令。

重构 > 更新引用引脚命令用于在 POU 的不同使用时段根据当前的 POU 声明更新 POU 的输入和输出引脚。

如果光标置于 POU 声明第一行中的或者设备编辑器中的 POU 名称上,则此命令会出现在上下文菜单中,或者出现在编辑 > 重构菜单中。

对变量重新排序命令

重构 > 对变量重新排序命令让您能够在范围 VAR_INPUTVAR_OUTPUT 或 VAR_IN_OUT 内更改变量声明的顺序。

示例:

VAR_INPUT
  invar2 : INT;
  invar1 : INT;
  in : DUT;
  bvar : BOOL;
  invar3 : INT;

按照以下步骤更改声明顺序:

步骤

动作

1

右键单击声明部分,执行重构 > 对变量重新排序命令。

结果重新排序对话框随即打开,其中包含 VAR_INPUT 变量列表。

2

invar1 : INT; 条目拖到 invar2. 条目前面的位置。

结果invar1 声明位于顶部位置。

3

单击确定以关闭对话框。

结果重构对话框随即打开。受影响的元素标示为黄色。

4

单击确定,接受功能块参数的新顺序。注意,修改后的参数顺序还会反映在 POU 的调用中。

修改变量声明并自动应用重构

如下列所示,重构能够有助于对变量重命名(使用自动声明)。

该示例的一个前提条件是,必须有包含输入 iA 的功能块 fb_A 可用。

步骤

动作

注释

1

执行命令工具 > 选项...

结果选项对话框随即打开。

2

在左侧选择类别重构

3

自动声明部分中,选择选项添加移除变量,改变范围保持变量

4

双击功能块 fb_A

5

fb_A 的声明中选择一个变量,比如 iA

或者可以将光标置于变量前面或变量上。

6

执行编辑 > 自动声明... 命令。

或者使用快捷键 Shift + F2

结果自动声明对话框随即打开。显示变量 iA 的设置。

7

编辑名称并将 iA 更改为 iCounter_A

结果Refactoring - Renaming from iA to iCounterA 对话框随即打开。使用此变量的 POU 在树结构中突出显示。

8

单击确定,应用重命名并关闭对话框。