我有一个有负标志的类(“DoNot {Action}”)。我想将此标志更改为正“Do”并更改代码中的所有检查,基本上否定它们。有没有这样的重构?
这是一个例子。如果我将Flage DoNotFilter更改为DoFilter,则查看此标志的所有代码都应相应更改。
public bool DoNotFilter
{get;private set;}
更改为
public bool DoFilter
{get;private set;}
所以
if (attribute.DoNotFilter == true)
需要改为
if (attribute.DoFilter == false)
答案 0 :(得分: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 to:
if (!DoFilter)
答案 1 :(得分: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