Vb.net 将模块重构为类:将共享字段更改为实例字段
我目前正在重构一个旧的VisualBasicDLL(VB.Net),它将所有数据存储在一个名为Globaldefinitions的模块中,作为公共字段。大约有200个字段,在代码中引用了数千次:Vb.net 将模块重构为类:将共享字段更改为实例字段,vb.net,visual-studio,visual-studio-2010,refactoring,Vb.net,Visual Studio,Visual Studio 2010,Refactoring,我目前正在重构一个旧的VisualBasicDLL(VB.Net),它将所有数据存储在一个名为Globaldefinitions的模块中,作为公共字段。大约有200个字段,在代码中引用了数千次: Public Module Globaldefinitons Public a As Short ... Public zz10 As Double End Module 在DLL本身中,导入Globaldefinitions后,这些字段将使用其名称(无模块前缀)引用:
Public Module Globaldefinitons
Public a As Short
...
Public zz10 As Double
End Module
在DLL本身中,导入Globaldefinitions后,这些字段将使用其名称(无模块前缀)引用:
我需要将模块更改为具有非共享字段的类。这意味着,这数千个引用中的每一个都需要引用该类的实例:
globalDefinitionsInstance.a = 5
我如何有效地进行这项工作
在源代码上运行的正则表达式将失效。重构工具如Re Sharper或CodeRush似乎没有提供这种功能。Visual Studio 2010也无法自动完成此操作。以下是我更改此操作的方法。对于
GlobalDefinitions
中的每个字段,请执行以下操作
- 使用Visual Studio Refactor Rename将其重命名为唯一名称
。这将把所有难以匹配的名称变成非常容易匹配的名称Bad\u name\u a
- 对
执行全局搜索并替换为Bad\u Name\u a
。这里甚至不需要正则表达式。名称和替换项是唯一的globalDefinitionInstance.Bad\u Name\u a
- 使用Visual Studio重构重命名将其重命名为您选择的更好的名称
- 以下是我改变这一点的方法。对于
GlobalDefinitions
中的每个字段,请执行以下操作
- 使用Visual Studio Refactor Rename将其重命名为唯一名称
。这将把所有难以匹配的名称变成非常容易匹配的名称Bad\u name\u a
- 对
执行全局搜索并替换为Bad\u Name\u a
。这里甚至不需要正则表达式。名称和替换项是唯一的globalDefinitionInstance.Bad\u Name\u a
- 使用Visual Studio重构重命名将其重命名为您选择的更好的名称
a
重命名为尽可能唯一的内容,例如replacetThisSillyPropertyNameNow
。然后,您可以进行全局搜索,并使用所需的替换项替换新名称。我将首先使用内置的VS 2010重命名功能将a
重命名为尽可能唯一的名称,例如ReplaceThisSillyPropertyNameNow
。然后,您可以进行全局搜索,并用所需的替换项替换新名称。谢谢。这仍然需要大量的工作,但至少比简单的搜索和替换更安全。谢谢。这仍然需要大量的工作,但至少比简单的搜索和替换更安全。
globalDefinitionsInstance.a = 5