重构ifs

时间:2011-12-28 09:53:10

标签: c# refactoring

如何重构下面包含许多ifs的代码,每个块包含不同的场景。

if(condition1)
{
  ConfigCondition1();
  GetSetCondition1Results();
}
if(condition2)
{
  ConfigCondition2();
  GetSetCondition2Results();
}
if(condition3)
{
  ConfigCondition3();
  GetSetCondition3Results();
}

3 个答案:

答案 0 :(得分:3)

使用Strategy Design Pattern

策略模式将算法封装在对象中,并帮助您将条件语句重构为简单的函数调用。

您可以使用

Here is a nice example in .NET

答案 1 :(得分:2)

Strategy pattern似乎最适合您的问题。

使用策略模式,客户端可以从一组已实现的算法中选择将在运行时执行的算法。

答案 2 :(得分:0)

遵循此指南。

  • 是否所有if语句都与相同的值相比较?如果是,请使用switch阻止
  • 一个if阻止排除其他人吗?如果是,请使用else if
  • 一个块是否依赖于另一个块的值?如果是,请将它们嵌套在另一个内。
  • 如果不是上述任何一项,即必须检查所有区块,则无法再进行优化。