2009-09-24 15 views
1

我有一個具有負面標誌的類(「DoNot {動作}」)。我想將此標誌更改爲正面的「執行」並更改代碼中的所有檢查,基本上否定它們。有沒有這樣的重構?Resharper或CodeRush - 將標誌從負向更改爲正

這裏是一個例子。如果我將DoNotFilter修改爲DoFilter,所有查看此標誌的代碼都應相應更改。

public bool DoNotFilter 
{get;private set;} 

更改

public bool DoFilter 
{get;private set;} 

所以

if (attribute.DoNotFilter == true) 

需要改變,以

if (attribute.DoFilter == false) 
+0

所以要重命名的字段和翻轉所有布爾引用呢?我不知道提供該功能的任何產品。 – Godeke 2009-09-25 00:13:32

+0

是的,這就是我想要的。我繼承了一些代碼,它對負面標誌沒有意義。 – epitka 2009-09-25 00:15:00

回答

2

你也許能夠得到內聯地產重構中的ReSharper做什麼你要。不過,我不確定它是否可以使用屬性。

例子:

public bool DoNotFilter 
{ get; private set; } 

public void Foo() 
{ 
    if (DoNotFilter == true) 
    { 
     Console.WriteLine("Aha!"); 
    } 
} 

現在更改爲:

public bool DoFilter 
{ get; private set; } 

public bool DoNotFilter 
{ get { return !DoFilter; } } 

現在重構DoNotFilter和內聯地產:

public void Foo() 
{ 
    if (!DoFilter == true) 
    { 
     Console.WriteLine("Aha!"); 
    } 
} 

如果你試試這個,一定要檢查一切源代碼管理第一! :)沒有保證!

還可以去除多餘的比較來獲得,如果到:

if (!DoFilter) 
+0

謝謝,我可以試試這個。屬性只是一個例子,沒有涉及的屬性(註釋) – epitka 2009-09-25 01:21:13

+0

順便說一句 - 我假設所有的代碼都在一個解決方案。 – TrueWill 2009-09-25 01:26:41

+0

是的,這是所有在一個解決方案 – epitka 2009-09-25 01:32:43

1

您可以使用Visual Studio的查找和替換對話框。要午餐對話框,請按Ctrl + H。

確保選中「使用」複選框,並在下拉列表中選擇「正則表達式」。我也會檢查「搜索隱藏文本」和「搜索」複選框。

在 「查找內容」 中輸入:<DoNot{:i+}

在類型 「替換爲」:Do\1

它將刪除 「不是」 DoNotXXX的所有地方。

接下來,讓我們用

if (attribute.DoFilter == false) 

更換

if (attribute.DoFilter == true) 

如果您關閉查找和替換對話框,再次按下Ctrl + H。

在 「查找內容」 中輸入:<Do{:i+} == true

在類型 「替換爲」:Do\1 == false

+0

Vadim,感謝您的答案,但上面的代碼只是一個例子,它並不像以上那樣直截了當。 – epitka 2009-09-25 01:18:59

相關問題