我对任何“工具”感兴趣,以真正减少if / else语句。例如,如果一个人有一个标题(即北,南等),并且一个指令(向前,向后,向左等)是8个不同的可能分支,我怎么能把它重构为更少的东西呢?重复?
E.g。 if(person.Heading =“N”&& person.Instruction =“前进”)
等等其他可能的排列。
我正在使用.NET 4.0。 LINQ是可以接受的(虽然我想知道现代和“老式”方法)。
由于
答案 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
本文介绍了四种用于转换条件的模式更灵活的结构:
它组织问题的方法,并包含对其他来源的引用。 我甚至认为20岁以上对我有用。
答案 2 :(得分:0)
您是否尝试过为此场景创建一个函数,然后使用Switch语句(这是另一种选择)。该功能将专门用于在出现所有不同场景时查找要执行的操作。如果这有帮助,请告诉我。你熟悉Linq所以没必要提。请查看此链接http://msdn.microsoft.com/en-us/library/06tc147t%28v=vs.71%29.aspx
显然,上述评论中提到了州模式。