【发布时间】:2016-09-12 23:50:06
【问题描述】:
让我们直接上一个例子:
public bool MeetsAllConditions()
{
bool check1, check2, check3;
// Some code to define result of check1
if (something...)
{
if (something...)
{
check1 = true;
}
}
// many more code to define check2 and check3
....
if (check1 && check2 && check3)
{
return true;
}
return false;
}
现在,定义每个check 的代码非常昂贵。因此,我想让定义每次检查结果的代码在 only in final if 语句中进行评估。这样,如果任何检查失败,我可以利用惰性评估来节省资源。
如果不为 C# 中的每个 check 定义单独的方法,我将如何处理此问题?
【问题讨论】:
-
您可以在您的 check1 行之后执行像
if (!check1) return false;这样简单的操作,并且在每次后续检查之后执行类似操作。然后只需在底部return true;。 -
但是,“更多代码”乘以 3 表示如果您确实为每次检查创建单独的方法,您的代码将更易于维护。
-
我不想让它们成为单独的方法,因为它们对我正在编写的主要方法来说太具体了。在每条语句之后返回 false ..似乎让我的代码变脏了 :( 但感谢您的建议!
-
也许您正在编写的主要方法应该移动到它自己的类中,然后检查方法可以是该类的私有方法?需要考虑的事情。
标签: c# .net boolean lazy-evaluation