次のように増加するオプションのパラメーター(およびオプションのパラメーターと任意の数のパラメーターを許可しない疑似言語)を取る関数があるとします。
function doStuff(Param a)
function doStuff(Param a, Param b)
function doStuff(Param a, Param b, Param c)
それらを単一の呼び出しに統合する良い方法は何ですか?2つのデザインを想像できます。
すべて落ちる:
function doStuff(Param a)
doStuff(a, defaultB)
function doStuff(Param a, Param b)
doStuff(a, b, defaultC)
function doStuff(Param a, Param b, Param c)
// magic goes here
- メリット:コードの重複が少なく、単一のデフォルトパラメータを簡単に変更できます。
- 欠点:多くの関数呼び出しにより、スタックトレースが読みにくくなるか、役に立たなくなる可能性があります。
または、「最後の」関数を直接呼び出します。
function doStuff(Param a)
doStuff(a, defaultB, defaultC)
function doStuff(Param a, Param b)
doStuff(a, b, defaultC)
function doStuff(Param a, Param b, Param c)
// magic goes here
- 利点:新しい関数がチェーンに追加されても心配せず、関数呼び出しは多くありません。
- 欠点:多くのコードの重複、特にデフォルト値。
私は何を考えなかったのですか?
CodeReviewは実際のコードをレビューするためのものです。あなたは疑似コードを提示しているので、そこにはトピックではありません。
—
Winston Ewert 2012年
aを指定するbか、どちらも指定しないようにするなど)。ところで、タイプミス:中間のオーバーロードの実装は、例間で同一である必要があります。