「ガードステートメント」パラダイムと「単一関数出口点」パラダイムを使用するプロジェクトの保守性に関する研究 (カジュアルと堅牢の両方) があるかどうか疑問に思っています。
ガード ステートメントの例 (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の誰かがそれがどこにあるかを知っていると思いました. これまでのところ、私の Web 検索は成功していません。
**多くのプログラマー (私を含む) が、状況に応じてコード全体で両方の原則を使用していることも認識しています。好ましいパラダイムとして使用するための優れた保守性の実績があるのはどれかを発見したいと思っています.*