# 重构

通常，重构是一种改进现有软件代码设计而不改变其工作方式的技术。

在MetaFacture中，重构为重命名对象和变量以及更新引用的插脚提供了功能。您可以显示所有已重命名的对象和变量，然后一次或单独重命名它们。在工具 ➔ 选项中，您还可以配置哪里MetaFacture将提示您进行重构。

### 全局变量重命名​

要求; 打开的项目至少包含一个功能块FB和一个全局变量列表。全局变量列表GVL在编辑器中打开，并包含一个变量声明(例如:iGlobal)。FB使用iGlobal.

在整个项目中重命名全局变量

1.选择变量名为iGlobal的全局变量。

2.右键单击该变量并单击重构 ➔ 重命名iGlobal。

3.在重命名对话框中，在新的名称输入字段中输入一个名称，例如iGlobalOK，然后单击确定。
⇒打开重构对话框。在左侧的设备树视图中，GVL和FB对象以红色和黄色突出显示。在右侧的视图中，FB在其编辑器中是打开的，并且iGlobal已经被重命名为iGlobalOK。

4.点击确定。

5.⇒在您的项目中再没有全局变量iGlobal。现在iGlobalOK全部替换。

在整个项目中重命名全局变量(POU除外)

1.选择变量名为iGlobal的全局变量。

2.右键单击该变量并单击重构 ➔ 重命名iGlobal。

3.在重命名对话框中，在新的名称输入字段中输入一个名称，例如iGlobalTest，然后单击确定。
⇒打开重构对话框。在左侧的设备树视图中，GVL和FB对象以红色和黄色突出显示。在右侧的窗口中，函数块FB 在其编辑器中打开。iGlobalTest列出来替换了iGlobal。

4.右键单击右侧视图。

5.单击拒绝此对象，然后单击确定。
⇒全局变量iGlobal在项目中的FB中可用。变量iGlobalTest现在在前一个变量所在的对象中指定。
消息视图中的错误消息报告没有定义iGlobal标识符。

### 添加和删除输入变量​

在块的声明部分，您可以使用重构命令添加和删除输入和输出变量。MetaFacture在块的发生位置和调用位置执行更新。您可以单独接受或拒绝这些更新。重构对话框也会为此打开。

要求：在编辑器中打开FCT(函数类型)POU。该函数已经包含了输入变量input1、input2和inputx。它们在PLC_PRG和POU程序中被调用。

1.在FCT函数的声明部分设置焦点。

2.点击重构 ➔ 添加变量。⇒将打开用于声明变量的默认对话框。

3.使用VAR_INPUT和数据类型INT声明变量input_3。点击确定并关闭对话框⇒重构对话框打开(参见下图)。受影响的位置用黄色标记。(1)+(2)

4.在右上角，从下拉列表中选择使用占位符文本添加输入。(3)。

5.在窗口的左侧，单击突出显示的对象之一(例如，PLC_PRG)。右键单击并选择接受全部工程命令，在FCT中用于整个项目的新位置添加新变量。
⇒在右侧的视图中可以看到PLC_PRG实现部分的变化: 占位符_REFACTOR_出现在添加新变量的位置。

6.点击确定并关闭重构对话框。

7.点击编辑 ➔ 查找。在项目中搜索“_REFACTOR_”以检查和编辑受影响的位置。

8.注意：作为一种替代方法，您可以使用另一个初始化值插入新变量，而无需首先使用占位符。在本例中，在步骤4中选择“使用以下值添加输入”，并在下拉列表右侧的字段中键入值。

一个新变量的例子与占位符文本在一个CFC块:

请注意，您还可以通过重构删除变量。

### 重新排序声明中的变量​

在函数块的声明部分中，可以通过重构来更改声明的顺序，对于具有作用域VAR_INPUT、VAR_OUTPUT或VAR_IN_OUT的声明，可以更改此顺序。

要求; POU的声明部分是开放的，包括声明，例如:

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

1.右击此声明块以访问右键菜单。

2.点击重构 ➔ 重命名变量。
⇒重命名对话框将打开，其中有一个VAR_INPUT变量列表。

3.拖拽变量invar1 : INT;进入invar2之前的位置条目。
⇒invar1声明现在位于顶部。

4.点击确定并关闭对话框。
⇒打开重构对话框。受影响的位置用黄色标记(见上图)。

5.单击确定接受功能块的新命令。

### 更改变量声明并自动应用重构​

重构可以帮助您在重命名变量时进行声明(通过“自动声明”的方式)。

要求; 功能块fb_A。

1.点击工具 ➔ 选项。
⇒打开选项对话框。

2.选择重构类别。

3.在自动声明中，激活重命名变量、添加或删除变量或更改命名空间的选项。

4.双击功能块fb_A。

5.在fb_A声明中选择一个变量，例如iA。另一种方法是，您可以在变量之前或在变量中设置光标。

6.指定编辑 ➔ 声明变量([ Shift ] +[ F2 ] )。
⇒声明变量对话框打开。对话框中包含了iA的设置。

7.将iA的名称更改为iCounter_A。

8.通过重构改变的选项出现并被激活

9.点击确定。
⇒将打开重构对话框从iA重命名为iCounterA。所有受变量重命名影响的位置都标记在那里。

10.点击确定并关闭对话框。⇒应用更改。