ひがやすを技術ブログ

電通国際情報サービスのプログラマ

流れるようなインターフェースと脱CoC

今後はやるフレームワークは「流れるようなインターフェース」を持ったものになるんじゃないかなぁと思います。流れるようなインターフェースの説明は、ファウラーたんのFluentInterfaceを参照してください。
Seasar2の新O/R Mapper(以後S2JDBCと呼びます)もこの「流れるようなインターフェース」を実現しています。例えば、JdbcManagerを使った検索はこんな感じになります。


List<Employee> results = jdbcManager.from(Employee.class)
.join("department")
.where("name like ?", "S%")
.orderBy("name")
.getResultList();
一番の特徴は、可読性の高さですね。何をやっているのかが一目瞭然ではないでしょうか。
二つ目は、IDEと組み合わせることで、APIを覚えていなくても自然に使えることです。何か記述したかったら、コード補完によって使える単語(メソッド)が自動的に選択されます。これが脱CoCにつながってきます。CoCは事前に規約を知っていないとどうしようもありませんが、「流れるようなインターフェース」の場合は、IDEが自動的にできることを教えてくれます。また、単語(メソッド)の間違いもIDEが自動的に教えてくれます。
例えば、orderBy()を間違えてsort()と書けば、そんなメソッドないよとIDE(コンパイラ)が教えてくれます。細かいことを覚えておく必要がないのです。
CoCは、確かに書くコードは減りますが、覚えなければいけないことが増えます。一番の問題点は、間違えたときにどこが間違っていたのか見つけづらいことです。
それに対して「流れるようなインターフェース」は、可読性が高いのでメンテナンスがしやすく、覚えることも少なくてすみます。間違った場合でも、どこが間違っているのか一目瞭然です。小規模な開発だけでなく、大規模な開発にも十分に答えることができるのです。