Мне интересно, проводились ли какие-либо исследования (как случайные, так и надежные) в отношении работоспособности проектов, в которых используется парадигма «оператор защиты» и парадигма «точка выхода из одной функции»?
Пример оператора охраны (в 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 будет знать, где она была. Мои поиски в сети пока не увенчались успехом.
** Я также знаю, что многие программисты (включая меня) используют оба принципа в своем коде, в зависимости от ситуации. Я просто надеюсь выяснить, какой из них имеет проверенную репутацию лучшей ремонтопригодности для использования в качестве предпочтительной парадигмы. *