重构过多的条件逻辑

时间:2012-01-29 23:36:19

标签: c#

我对任何“工具”感兴趣,以真正减少if / else语句。例如,如果一个人有一个标题(即北,南等),并且一个指令(向前,向后,向左等)是8个不同的可能分支,我怎么能把它重构为更少的东西呢?重复?

E.g。 if(person.Heading =“N”&& person.Instruction =“前进”)

等等其他可能的排列。

我正在使用.NET 4.0。 LINQ是可以接受的(虽然我想知道现代和“老式”方法)。

由于

3 个答案:

答案 0 :(得分:1)

您可以尝试实现状态模式,如@anthonypegram建议的那样。请查看此链接以获取更多信息http://www.dofactory.com/Patterns/PatternState.aspx

答案 1 :(得分:1)

除了State Pattern,GOF,Refactoring to Patterns等常用资源外,我发现本文非常有用:转换条件:重组模式语言 - http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.36.7194

本文介绍了四种用于转换条件的模式更灵活的结构:

  • Self Conditional to SubClassing
  • 将客户端条件转换为多态“
  • 申请州
  • 应用NullObject

它组织问题的方法,并包含对其他来源的引用。 我甚至认为20岁以上对我有用。

答案 2 :(得分:0)

您是否尝试过为此场景创建一个函数,然后使用Switch语句(这是另一种选择)。该功能将专门用于在出现所有不同场景时查找要执行的操作。如果这有帮助,请告诉我。你熟悉Linq所以没必要提。请查看此链接http://msdn.microsoft.com/en-us/library/06tc147t%28v=vs.71%29.aspx

显然,上述评论中提到了州模式。