オブジェクト指向プログラミング言語で使用できる構文で、メソッドがオブジェクトを返すことを利用して、メソッドの呼び出しを次々と繋げていくものです。
メソッドを呼び出す構文が obj.m1(x)
のように、オブジェクト(インスタンス)とメソッド名、引数、そして戻り値という形式になっているプログラミング言語で、戻り値がオブジェクトであれば、obj.m1(x).m2(y).m3(z)
のように連続的に呼び出すことができます。
メソッドチェーン内のメソッドは、呼び出しの元になったオブジェクト(よく this や self で表現されるもの)を返すようにすることが基本ですが、メソッド内で新しいオブジェクトを生成して返すことでも実現できます。ただし、どのオブジェクトを操作しているのか分かりづらく、誤解を与える可能性もあるため注意が必要です(イミュータブルな考え方を適用する場合には、新しいオブジェクトを生成して返すほうが自然ではあります)。
また、あまりにも呼び出しの連鎖が長引いたり、渡す引数が多かったりすると、かえって可読性を落とす結果になることもあります。
よけいな変数を導入する必要がなく、1文で簡潔に記述できるメリットがあります。Builderパターンと呼ばれるデザインパターンは、メソッドチェーンを活用する代表的な例です。
デメリットとして、途中の結果を確認しづらいことが、デバッグをやりづらくする可能性があります。オブジェクトを返すことに戻り値を使ってしまうため、エラー値などのほかの値を返せないことが不便になることもあります。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
![]() |
管理者情報 | プライバシーポリシー |