2012年5月4日金曜日

メソッドチェーンなクラスをScalaで書いたらこうなった。

Play2.0でATNDをゴニョゴニョするアプリを作ろうと思い、コードを書いていた。

まず手始めに、ATND APIを叩くためのクラスを作っていたのだが、いかんせんパラメータが多い。
検索の関数が大量の引数を受け取るというのはあまりにも不細工だ。

そこでふと、Effective Javaの第2章 項目2 を思い出した。

メソッドチェーンな感じでパラメータを受け取ればいいんだなと。

で、書いてみた。


なるほど。できた。
しかし、ミュータブルな変数多すぎ。。。。

Twitterでいろいろ悩んでいると、こんなアドバイスが。



なるほど。
http://blog.rafaelferreira.net/2008/07/type-safe-builder-pattern-in-scala.html
を参考に書きなおしてみる。

https://gist.github.com/2585850

パラメータをセットする関数が、必要なパラメータのみを書き換えた自身のクラスの新しいインスタンスを返すので、ミュータブルな変数がいらないということか。
うーん。でも、なんか微妙。。。



なるほど! case classのcopyメソッドか! で。書きなおしてみる。

https://gist.github.com/2586213

ちょびっとスッキリした。

0 件のコメント:

コメントを投稿