我对真正减少if/else语句的任何“工具”感兴趣。例如,如果有一个人有一个标题(即北,南等),并有一个指令(向前,向后,向左等),这是8种不同的可能分支,我怎么能把它重构成更少的东西重复?重构过多的条件逻辑
E.g.如果为每一个其它可能的置换(person.Heading = “N” & & person.Instruction =“向前移动)
等。
我使用.NET 4.0。LINQ是可接受的(虽然我想知道现代和“老斯库尔”的方法)。
感谢
我对真正减少if/else语句的任何“工具”感兴趣。例如,如果有一个人有一个标题(即北,南等),并有一个指令(向前,向后,向左等),这是8种不同的可能分支,我怎么能把它重构成更少的东西重复?重构过多的条件逻辑
E.g.如果为每一个其它可能的置换(person.Heading = “N” & & person.Instruction =“向前移动)
等。
我使用.NET 4.0。LINQ是可接受的(虽然我想知道现代和“老斯库尔”的方法)。
感谢
您可以尝试按照建议的@anthonypegram实现状态模式。看看这个链接更多的信息http://www.dofactory.com/Patterns/PatternState.aspx。
从状态模式的通常来源现在看这个。谢谢。 – dotnetdev 2012-02-03 00:45:02
您是否尝试过创建函数只是为了这个场景,然后使用switch语句(这是一个二选一)。该功能将是只是致力于寻找当所有不同情景发生时要做的事情出现。让我知道这是否有帮助。你对Linq很熟悉,所以不必提及。看看这个链接http://msdn.microsoft.com/en-us/library/06tc147t%28v=vs.71%29.aspx
显然状态模式在上面的评论中提到。
我可以,但真的想找到一种方法来做同样的事情,而不是如果/其他或切换。表驱动的方法是一种方法... – dotnetdev 2012-02-03 00:45:27
除此之外,GOF,重构到模式,等等,我发现这个文件非常有用:变换条件句:一个重组模式语言 - http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.36.7194
本文提出4 (4)图案,用于将标记条件更柔性结构:
它组织方法问题,并含有其他来源的引用。 对我有用甚至认为20岁以上。
你能引用一些可能提供解决OP问题的方法的文章部分吗? – EtherDragon 2012-01-30 23:32:56
很难说有限的信息,虽然状态机或全状态模式可能会证明是有用的。 – 2012-01-29 23:39:53
你需要什么信息? – dotnetdev 2012-01-29 23:54:55