次の例のようなコードに出くわすことがあります(この関数の機能はこの質問の範囲外です)。
function doSomething(value) {
if (check1(value)) {
return -1;
}
else if (check2(value)) {
return value;
}
else {
return false;
}
}
あなたが見ることができるように、if
、else if
およびelse
ステートメントは、と組み合わせて使用されているreturn
声明。これはカジュアルなオブザーバーにはかなり直感的に思えますが、else
-s を削除し、次のようにコードを簡略化する方が(ソフトウェア開発者の観点から)よりエレガントになると思います。
function doSomething(value) {
if (check1(value)) {
return -1;
}
if (check2(value)) {
return value;
}
return false;
}
これは理にかなっています。return
(同じスコープ内の)ステートメントに続くすべてが実行されることはないため、上記のコードは意味的に最初の例と等しくなります。
上記のうち、優れたコーディングプラクティスに適しているものはどれですか?コードの可読性に関して、どちらの方法にも欠点はありますか?
編集:参照として提供されたこの質問で、重複した提案が行われました。私の質問は別のトピックに関係していると思います。他の質問で提示されたような重複したステートメントを避けることを求めていないからです。どちらの質問も、わずかに異なる方法ではありますが、繰り返しを減らすことを目指しています。
-1
は数値でfalse
あり、ブール値であり、value
ここでは指定されていないため、どのタイプのオブジェクトでもかまいません。
value
は実際に整数であることを望んでいました。それが何かである場合、それはさらに悪いことです。
else
はささいな問題ではありませんが、大きな問題は、明らかに単一の関数から2つのデータ型を返すため、関数のAPIが予測不能になることです。