特定のパラメーターを受け取る可能性がある、または受け取らない可能性がある関数がある場合、関数をオーバーロードするか、オプションの引数を追加する方が良いですか?
それぞれに浮き沈みがある場合-いつそれぞれを使用しますか?
言語がそれらを適切にサポートしている場合(たとえば、該当する場合はタイプセーフ)、次の理由でオプションの引数を使用します。
コンストラクターの種類の状況を想定します。多くのオプションのある状況を防ぐために、流暢なビルダーパターンを選択することがよくあります。
たとえば、Ordering.natural().onResultOf(function).reverse().compound(Ordering.natural().onResultOf(function2))
は、Guavaに実装されているFluent Builderインターフェースを呼び出す例です。
もちろん、今はビルダーの状態を保持するために別のオブジェクトが必要ですが、構築の動作と構築の動作を分離することで全体的な複雑さを軽減します。