ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

2007年~2011年ごろまで はてなダイアリー に書いてた記事を引っ越してきました。

ディノもくもく会に行ってきました。

Factoryが内部で保持するキャッシュを回避する方法を思いついた。 - ぐらめぬ・ぜぷつぇんのはてダで感じた疑問を解決すべく、ディノもくもく会 with ビールサーバに行ってきました。(2008-09-30 - kunitの日記

結局これってSingletonパターンの亜種で、それでTDDにおいても結構Singletonって問題視というか厄介な作りとして認識されているらしい。実際、TDDでテストコードを上手く作る為に、そういった本質的でない部分で頭を悩ませる場面もなきにしもあらずで*1そこは匙加減のしどころだろう。今回の部分については、まぁ↑のエントリに書いてあるような解決方法で宜しいのではないでしょうか、と。

というわけでその方向で直してみます。ありがとうございました。

っていうかDIコンテナ使うのが一番綺麗な解決だとは思う。全部Interfaceでつないで、実装をDIコンテナの設定で切り替えるのが楽。

余談だけど、そうしてぽんぽんオブジェクトを生成するようにしてしまうとそれはそれで、テストケースの数が膨大になってくると今度はメモリの消費量が半端無くなって来るという話も聞けました。なので、Factory相当の部分に"clear()"メソッドを用意しておく、というのもありといえばありなんだけどPHPだとunset()で本当にメモリ解放されるのか微妙だよねー、というのはあるそうです、ハイ。

後半はすみません、自分が質問しまくりで、半ば「ディノ中途採用説明会」の趣に。暫く前からディノ自体やディノの仕事の受け方について興味があったので、いろいろ聞けて良かったのですがかなり突っ込んでしまったり、暴走気味ですいませんでした、ハイ。

コーディングとしてのもくもく会は、渋谷は若干遠いということもあり出るのが難しいというか疲れるのですが、やはりPHPでのTDDについて詳しい人&実践者に直に話を聞ける機会はそうないと思います。そういった時に、もくもく会にちょろっと御邪魔してお話を伺えるのは大変有り難いです。前回も雑誌記事や書籍の拾い読み+我流でぐちゃぐちゃ作ってきたPHPのテストコードだけでは今ひとつTDDに頷けない部分があったのですが、直に話を聞けたおかげで大分クリアになりました。

というかPHP勉強会の懇親会とかだとお酒も入ってしまいますし、席も焼き肉が多いので狭い店内身動き取りづらいですし、図体ばかりふとっちょな自分には少々辛い。お酒無しで少人数で突っ込んで聞けるもくもく会@ディノは、あまり出れないとは思いますが御邪魔でなければまたのっそり入らせて頂きます。そういう時はほぼ議論したいネタがあるため、「もくもく」は出来なくなってしまうとは思いますが・・・。

*1:むしろテストコードを動作させる為に実装を変える、とか本末転倒的な事態が発生する事もあるそうです。というか実感。