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