2011-11-14 30 views
1

我目前正在重構一箇舊的Visual Basic DLL(VB.Net),它將其所有數據存儲在一個名爲GlobalDefinitions的模塊中作爲公共字段。大約有200場,引用上千次各地代碼:將模塊重構爲類:將共享字段更改爲實例字段

a = 5 

Public Module Globaldefinitons 
    Public a As Short 
    ... 
    Public zz10 As Double 
End Module 

在DLL本身,進口Globaldefinitions後,這些字段是用他們的名字(無模塊前綴)引用

我需要將模塊更改爲具有非共享字段的類。這意味着,每一個這些數以千計的引用都需要引用類的實例:

globalDefinitionsInstance.a = 5 

我怎麼去這個有效?

在源代碼上運行的正則表達式不變。像Re-Sharper或CodeRush這樣的重構工具似乎沒有提供這種功能。 Visual Studio 2010也不能自動執行它。

回答

1

這是我會改變這種情況的方式。對於GlobalDefinitions各個領域做以下

  • 使用Visual Studio重構重命名,以將其重命名爲唯一的名稱Bad_Name_a。這將把所有難以匹配的名字變成非常容易匹配的名字
  • 執行全局搜索並將Bad_Name_a替換爲globalDefinitionsInstance.Bad_Name_a。這裏甚至不需要正則表達式。名稱和更換是唯一的
  • 使用Visual Studio重構重命名將其重命名爲您選擇
+0

謝謝。它仍然是很多工作,但至少比簡單的搜索和替換更安全。 –

0

的更好的名字,我會首先使用內置的VS 2010的重命名功能重新命名a的東西,是作爲儘可能獨特,如ReplaceThisSillyPropertyNameNow。然後,您可以進行全局搜索,並用您想要的替換替換新名稱。