我读了一个关于Stack Overflow问题的答案,其中包含以下建议代码:
Action<Exception> logAndEat = ex =>
{
// Log Error and eat it
};
try
{
// Call to a WebService
}
catch (SoapException ex)
{
logAndEat(ex);
}
catch (HttpException ex)
{
logAndEat(ex);
}
catch (WebException ex)
{
logAndEat(ex);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:对于LogAndEat使用lambda表达式而不是(在我看来更简单,更明显)私有方法的优点(如果有的话)是什么,如下所示:
private void LogAndEat(Exception ex)
{
// Log Error and eat it
}
Run Code Online (Sandbox Code Playgroud)
编辑:感谢您的答案到目前为止,但只是更清楚地重述我的基本问题:哪种方法更好/您会在这种情况下推荐?lambda表达式还是私有方法?
感谢大家为我投了赞成票的精彩答案,但我想我应该总结一下它们,以尝试在一个答案中捕捉其优点和缺点。
使用 lambda 表达式 (LE) 而不是私有方法的优点:
使用 lambda 表达式而不是私有方法的缺点:
还有一个更主观的可维护性问题,有人可能会说,大多数开发人员对 LE 的理解不如私有方法,因此可维护性稍差。人们还可能认为 LE 提高了可维护性,因为它封装在调用它的方法中,而不是对整个类可见的私有方法。