流れるようなインターフェース (Fluent Interface) とメソッドチェーン (Method Chain)

「流れるようなインターフェース」という考え方がある。パッと見は jQuery なんかでよく見かけるメソッドチェーンみたいな書き方のアレだ。

メソッドチェーンとは、名前のとおり、メソッドを実行して、その結果に対してさらにメソッドを実行する感じで、メソッドを繋げながら何らかの処理をしていく仕組みです。

流れるようなインターフェース (Fluent Interface)

流れるようなインターフェースとメソッドチェーンは違うものだよ。ぱっとみは似ているかもしれないけど。

流れるようなインターフェースでは、ソースコードを書いている人が、中断することなく流れるようにコーディングできなければいけない。

思考を中断せずに流れるようにコーディングができるかどうかが重要なんだ。そして、よくできた流れるようなインターフェースは、可読性が高い。

「単なるメソッドチェーンとは違うのだよ!メソッドチェーンとは!」

内部DSLは、汎用のプログラミング言語の書き方を工夫して、見かけ上の構文を自然言語に近づけた言語です。

メソッドに全部やらせすぎ。「オブジェクトの生成」「値の設定」「処理の実行」。これらは全部違う役割。そしてnewやプロパティという、専用の構文が用意されているというのに、全部メソッドでやってしまっている。だから良くも悪くも視覚上フラット。見た目スッキリ整ったようだけど、それぞれの持つ役割の意味が、構文からではなく名前からでしか判断出来なくなってしまっている。

なんでもかんでもメソッドチェーンなのが気持ち良い気がしてたけど、異なる操作なら分けて書いた方が適切に文が区切れると思うし、連想配列 (ハッシュ) みたいなモノで複数値を設定したりする方が良いのかもしれない。