2012-01-29 64 views
0

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

E.g.如果为每一个其它可能的置换(person.Heading = “N” & & person.Instruction =“向前移动)

等。

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

感谢

+2

很难说有限的信息,虽然状态机或全状态模式可能会证明是有用的。 – 2012-01-29 23:39:53

+0

你需要什么信息? – dotnetdev 2012-01-29 23:54:55

回答

0

您是否尝试过创建函数只是为了这个场景,然后使用switch语句(这是一个二选一)。该功能将是只是致力于寻找当所有不同情景发生时要做的事情出现。让我知道这是否有帮助。你对Linq很熟悉,所以不必提及。看看这个链接http://msdn.microsoft.com/en-us/library/06tc147t%28v=vs.71%29.aspx

显然状态模式在上面的评论中提到。

+0

我可以,但真的想找到一种方法来做同样的事情,而不是如果/其他或切换。表驱动的方法是一种方法... – dotnetdev 2012-02-03 00:45:27

1

除此之外,GOF,重构到模式,等等,我发现这个文件非常有用:变换条件句:一个重组模式语言 - http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.36.7194

本文提出4 (4)图案,用于将标记条件更柔性结构:

  • 自条件到子类
  • 变换客户端条件来多态性
  • 运用状态
  • 应用NullObject

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

+0

你能引用一些可能提供解决OP问题的方法的文章部分吗? – EtherDragon 2012-01-30 23:32:56