【发布时间】:2010-01-28 20:51:20
【问题描述】:
我之前在 SO 上问过 this 问题。这与它有关。我们有类似这样的代码库:
IRecipie FindRecipiesYouCanMake(IEnumerable<Ingredientes> stuff, Cook cook)
{
if(stuff.Any(s=>s.Eggs && s.Flour) && cook.DinerCook)
{
if(s=>s.Sugar)
return new Pancake("Yum");
if(s=>s.Salt)
return new Omlette("Yay");
}
/*.....
......
.....
loads of ifs and buts and else*/
}
我想摆脱这种混乱并采取更多的数据结构和OO路线。甚至我提供的代码示例也没有现在那么可怕。我查看了规范模式,发现它适用。关于如何改进代码的任何想法。
编辑:现在我意识到了,我什至可能想实现这个签名的方法:
List<IRecipe> WhatAllCanBeCooked(IEnumerable<Ingredients> stuff, Cook cook);
【问题讨论】:
-
我正准备将此标记为垃圾邮件 :)
-
@Mehrdad:呃!需要有一种方法来否决 cmets ;)
-
不要在你的煎蛋卷里放面粉 - yuk..,你能提供更多关于你想要完成什么的信息吗?
-
我知道 omlettes 没有面粉……但这就是我试图暴露的混淆逻辑的危险……我在示例中做得不好……但希望你明白我的意思: P
标签: c# business-logic business-rules