重构if语句

4

如何重构下面这个包含了许多if语句的代码,每个代码块中包含不同的情况。

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

为什么要重构它?我可能会使用switch语句。 - Leigh Ciechanowski
你为什么想要重构它,以及采用哪种方式?我的回答现在将是使用案例(但我认为这并没有太大帮助)。 - Moonlight
多态可能是答案,但我们不知道你在做什么以及你想要实现什么。这段代码的上下文是什么? - Oded
也许你可以使用 Dictionary<condition,Action> 类型来存储条件,根据条件获取已经分配相关方法的操作委托,并执行它。 - Zenwalker
3个回答

4

2

策略模式 似乎最适合您的问题。

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


0

请遵循以下指南。

  • 所有的if语句比较的值是否相同?如果是,则使用switch块。
  • 一个if块是否排除其他块?如果是,则使用else if
  • 一个块是否依赖于另一个的值?如果是,则将它们嵌套在一起。
  • 如果以上都不是,即必须检查所有块,则无法进行更多优化。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接