我敢说在某些边缘情况下could是重要的——但它们将变得极其罕见。我同意你的观点:首先要考虑可读性。
请注意,如果方法非常短,JIT 编译器may内联它 - 但如果它是一个大方法,你只是happen快速退出,可能不会。在极端情况下,您可能希望将方法分成两部分:一个短方法(可以内联)用于测试方法的其余部分是否有效,另一个用于实际执行工作。然后您可以先执行测试,然后调用第二个方法。坦白说我不太喜欢它,并且会only建议您在发现这确实是一个问题之后再这样做...但至少您向您的同事提出了一个建议,以应对它确实被证明是一个问题的可能性:)
一件事你may要考虑避免方法调用的一个原因是评估参数是否需要很长时间。例如,考虑记录:
Log.Info("I did something: {0}", action.GenerateDescription());
Now if GenerateDescription
需要很长时间,如果无论如何都不会发生日志记录,您就不想执行它......所以您可以编写:
if (Log.IsEnabled(LogLevel.Info))
{
Log.Info("I did something: {0}", action.GenerateDescription());
}
另一种选择是使用委托来推迟评估 - 尽管这可能有其自身的(小)成本:
Log.Info("I did something: {0}", () => action.GenerateDescription());
或使用方法组转换:
Log.Info("I did something: {0}", action.GenerateDescription);
这很可能不是您的同事担心的问题,但值得考虑:)