2009/12/20

TDDBootCampに参加してきたよ

見事に失礼なこと・・・
どこを修正したかは、恥ずかしくて言えません・・・

--

まずはお礼w
ラッセさん、ミルズさん、和田さん、ebackyさん、スポンサーの方々、スタッフの方々、
素晴らしいイベントをありがとうございます、本当にお疲れ様でした。
参加者の皆様、本当に楽しい時間をありがとうございました。

いやー、燃えた。すっごい燃えた。
興奮が覚めず、こんな時間に起きたのかもれないが・・・

午前中の座学は言うまでもなく素晴らしい内容で、
こりゃあ、自分の製造だけでもTDDにしなきゃいけないなぁ と
思わさしてくれる内容だった。

お品書きとか、内容とかは、聴く方に集中してたため
あれやこれやとかけない・・・

とりあえず

* 黄金の三角形
* レガシーコードにTDD入れるなら、手順を踏んで慎重にピンポイントで。

とか・・・

実習時間は、ペアプロと発表 * 2 だった。
ペアプロ自体、存在は知っててもやる気会がなく、今回初挑戦で
すっごい面白かったし、ものすごいタメになった。
(相手の人には聞いてばっかりで、申し訳ない感じでしたが。。。^^;)
発表は・・・相変わらず、下手くそなので修行が必要です。

実習課題については、
* キャッシュを作る
* 古い履歴は削除される

と、アバウトな問題で・・・w
でも、実際に誰かから要求されるのレベルは、こんなもんだよなぁとも。
こういう仕組みがほしいなー って、一緒に作ってる人にムチャぶりしたこともあるので
あまり人の事は・・・・

追加の課題で
* キャッシュサイズの変更ができる
* 時間がたつと消える
* 排他制御

自分は、2個目の途中で時間が終わったんだけど、3つ目にも
挑戦してる人がいて、いやー早いな と。

自分のソースコードを振り返ってみると
2週目を回してる最中で、ノードの時間に関して外部から取得変更にインタフェースを追加したんだが
ラッセさんのコードを見てると、システム時間をいじる部分に細工して、
単体モジュール自体に影響を与えずに時間のテストを行うのが、ベター(ベスト?)みたいだった。
C#でどうやるのかパッっと思いつかないが、そこは改善の余地があるのかなって。
ただ、時間取得、時間設定ってのは、内部的に実装してあった方が
問題の切り分けには役立つので、「Publicにして表に出した」のが、少し失敗だったかなと。

それから、排他の話で、どうやって確実に問題を起こすコードを作成するか
ってところで、ちょっと思ったのは
排他されるべき区間内で、順番が入れ違うと発生する部分を関数化しておくことで
外部から呼ばれるタイミングを制御するってのはどうかなぁ

制御順番として、A -> B -> C -> D っていう区分けがあったとして
これを全部関数化しておくことで、自由に呼ばれる順番を制御できるようにする

で、A -> A -> B -> B -> C -> C -> D -> D とか、やってみるとか。

ただ、これを書いてて思ったのは
テストに実装が釣られるないように注意しないといけなくて、
テストのために、実装が変更されるのは本末転倒だよなぁ。
さらに、区分けした関数は全部Privateになると思うので、それ相応のプロキシが必要なことか。
意図的に競合を発生させるってのは、悩みどころだ。

難しい。

すごい乱文だけど、とりあえず覚書だからいいかー(よくないか・・・)

追記
そういえば、いろんなおみやげもらってきたんだ。
Tシャツは嬉しかったw その他いろいろは活用します!

Powered by ScribeFire.

0 件のコメント:

コメントを投稿