1

否定フラグ ("DoNot{Action}") を持つクラスがあります。このフラグを正の「Do」に変更し、コード内のすべてのチェックを変更して、基本的にそれらを無効にしたいと思います。そのようなリファクタリングはありますか?

ここに例があります。フラグ DoNotFilter を DoFilter に変更すると、このフラグを参照するすべてのコードがそれに応じて変更されます。

public bool DoNotFilter
{get;private set;}

への変更

public bool DoFilter
{get;private set;}

それで

if (attribute.DoNotFilter == true)

に変更する必要があります

if (attribute.DoFilter == false)
4

2 に答える 2

2

ReSharper で Inline Property リファクタリングを取得して、必要なことを実行できる場合があります。ただし、属性で機能するかどうかはわかりません。

例:

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 と Inline プロパティをリファクタリングします。

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

これを試す場合は、まずすべてをソース管理にチェックインしてください。:) 無保証!

冗長な比較を削除して、以下の場合を取得することもできます。

if (!DoFilter)
于 2009-09-25T00:48:10.267 に答える
1

Visual Studio の [検索と置換] ダイアログを使用できます。ダイアログを起動するには、Ctrl+H を押します。

「使用」チェックボックスがチェックされ、ドロップダウンリストで「正規表現」が選択されていることを確認してください。また、「隠しテキストを検索する」と「検索する」チェックボックスもオンにします。

[検索対象] に次のように入力します。 <DoNot{:i+}

「置換」に次のように入力します。Do\1

DoNotXXX のすべての出現で「Not」を削除します。

次は交換しましょう

if (attribute.DoFilter == true)

if (attribute.DoFilter == false)

[検索と置換] ダイアログを閉じた場合は、もう一度 Ctrl+H を押します。

[検索対象] に次のように入力します。<Do{:i+} == true

「置換」に次のように入力します。Do\1 == false

于 2009-09-25T00:51:29.813 に答える