まず手始めに、ATND APIを叩くためのクラスを作っていたのだが、いかんせんパラメータが多い。
検索の関数が大量の引数を受け取るというのはあまりにも不細工だ。
そこでふと、Effective Javaの第2章 項目2 を思い出した。
メソッドチェーンな感じでパラメータを受け取ればいいんだなと。
で、書いてみた。
なるほど。できた。
しかし、ミュータブルな変数多すぎ。。。。
Twitterでいろいろ悩んでいると、こんなアドバイスが。
@daiksy @dproject21 割り込みですいませんが、Type Safe Builder Pattern blog.rafaelferreira.net/2008/07/type-s… とか(の応用でも)使えたりしないですかね?
— Kota Mizushimaさん (@kmizu) 5月 3, 2012
なるほど。
http://blog.rafaelferreira.net/2008/07/type-safe-builder-pattern-in-scala.html
を参考に書きなおしてみる。
https://gist.github.com/2585850
パラメータをセットする関数が、必要なパラメータのみを書き換えた自身のクラスの新しいインスタンスを返すので、ミュータブルな変数がいらないということか。
うーん。でも、なんか微妙。。。
.@daiksy 参照先のURLはたしかScala2.8以前で、まだcase classのcopyがなかったからだと思いますけど、今だったらだったらcopyメソッド使ったほうが短く書ける気が
— Kenji Yoshidaさん (@xuwei_k) 5月 3, 2012
なるほど! case classのcopyメソッドか! で。書きなおしてみる。
https://gist.github.com/2586213
ちょびっとスッキリした。
0 件のコメント:
コメントを投稿