ひがやすを技術ブログ

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

流暢なインターフェース流れるようなインターフェース

流暢なインターフェースという訳になってみたいなので、今後は、流れるようなインターフェースではなく、流暢なインターフェースという言い方に変えたいと思います。
流れるようなインターフェースにかわったようなので元に戻します。
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?FluentInterface
http://d.hatena.ne.jp/higayasuo/20071018#1192681950
ぶくまのコメントで、


http://www.objectclub.jp/community/codingstandard/ このあたりのJava規約だとチェインさせるような書き方は避けるべき、となっている
とあります(うちの会社のドキュメントじゃん)が、これはいろんな人が思うことだと思うので、私の意見を書いておきます。
まず、可読性が悪くなるという話は、昨日のエントリを参照していただければ、逆に可読性はあがるということが直ぐにわかっていただけると思います。ファウラーたんの文章にもありますが、読みやすさを第一に念頭において設計された「流暢なインターフェース」は可読性は高いのです。
同期化の話をすると、「流暢なインターフェース流れるようなインターフェース」を提供するオブジェクトは、そのコンテキスト(特定の状況)用なので、複数のスレッドで共通に使ったりするものではなく、スレッドセーフにする必要はないということです。
コマンド・問い合わせの分離のように、これまで良いとされていたことでも、より新しい使い方が出てこれば、変わっていく可能性があるということです。
追記:
昨日や今日のぶくまのコメントを見ると塗るぽったと気にわかりづらそうということを書いている方がいますが、そんなことはないですよ。だって戻り値は最後のメソッド以外はthisを返すだけだから。thisを返さない場合でも、「流暢なインターフェース流れるようなインターフェース」では戻り値が帰らないケースは最後の結果以外はないはずです。