我想知道是否有任何关于使用“保护语句”范式与“单功能退出点”范式的项目可维护性的研究(包括随意的和稳健的)?
Guard 语句示例(在 C# 中):
string GetSomeString()
{
if(necessaryConditionFails) { return null; }
if(!FunctionWithBoolReturn(someAttribute)) { return null; }
//all necessary conditions have been met
//do regular processing...
return finalStringValue;
}
单个函数退出点示例(在 C# 中):
string GetSomeString()
{
string valueToReturn = null;
if(necessaryConditionPasses && FunctionWithBoolReturn(someAttribute))
{
//all necessary conditions have been met
//do regular processing...
valueToReturn = finalStringValue;
}
return valueToReturn;
}
我知道两者的优缺点一直在无休止地争论 SO,但我正在寻找关于每种范式的可维护性的实际研究*。这可能是未知的,但我想如果信息在那里,SO 上的某个人会知道它在哪里。到目前为止,我的网络搜索还没有成功。
**我也知道许多程序员(包括我)在他们的代码中使用这两个原则,这取决于具体情况。我只是希望发现哪一个具有更高可维护性的可靠记录,可用作首选范例。*