流れるようなInterfaceって大まかにいうと下記の主張をしている。
静的な型付き言語だと、流れるようなインタフェースをライブラリが用意してくれていると、バグの発生が少なくなる。なぜかというと普通よく見かけるプログラミングでは戻り値に変数String resultに値が帰ってくるだけだが、そのresultの使い方の選択肢は無限にあり、その選択肢にはバグの選択肢がたくさんふくまれているからなのだ。
ところが、流れるインタフェースでは正解となるインタフェースしか用意されていない。 結果を処理するクラスとメソッドを探す手間が不要で、間違いがない。だからバグが少ないのだ。
自分は昔から、流れるようなインタフェースでプログラムをつくってきた。流れるようなインタフェースを作る時の留意する点は下記のとおりである。
JavaAssist?は動的にクラスを作り、しかもバイトコードなので、実際のIDEを使ったコーディング時に、流れるインタフェースを使う用途には、向いていない。
流れるインタフェースは、設計思想ごとにグループを持つと思われるが、 それだと、ほかの人のソースコードを転用する際に設計概念をあわせなくてはならないので、面倒だ。だから下記の提案をする。
問題は誰に向けての提案なのかということなのだが。気にしないでおこう。
mock.expects(once()).method("m").with( or(stringContains("hello"), stringContains("howdy")) );
http://martinfowler.com/bliki/