TDD」カテゴリーアーカイブ

PSPと詰将棋TDD(覚醒プログラム)の組み合わせの薦め

詰将棋のようにTDDでC#を学ぶ実験 | Moonmile Solutions Bloghttp://www.moonmile.net/blog/archives/8347 で、プログラムを練習する訳だが、実際の詰将棋のように「この問題は3分で解けると5級」みたいなのがあるといいと思う…というか、そういう作りをしている。 試験じゃないので(仕事ベースでやるので)、ググろうが問題文からコピペしようが構わない。実際、チェック上仕方がなかったので、問題のテストコードに解答が書いてあったりする。だいたい、1問(1つのテストメソッド)に対して、15分以内にコードが通るようになれば十分だろう。だいたい、人の集中力は10~15分程度なので、それを超えると効率がガタンと落ちる。訓練で、この時間は2時間ぐらいまで伸ばせるけど(時間制限のある不具合の修正のときに使う)疲れるので、お勧めはしない。 パーソナルソ … 続きを読む

カテゴリー: TDD | コメントする

詰将棋のようにTDDでプログラムを学ぶ(PHP編)

詰将棋のようにTDDでC#を学ぶ実験 | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/8347 の派生版として、PHP 版を作ってみました。 moonmile/TestPro-PHP: TDD で学ぶ PHP https://github.com/moonmile/TestPro-PHP 真面目に PHPUnit を使うのは始めてなので(以前、CakePHP を使ったときは、クライアントの C# でテストしていたので)、もうちょっと効率のよい書き方があるのかもしれませんが、ひとまず tests フォルダを作って、テストクラス毎にファイルを分けています。テスト対象となるクラス名を「Target」で統一したかったので(いちいち変えるのが面倒だったとも云う)、ファイル名だけが「target001.php」のように変わ … 続きを読む

カテゴリー: PHP, TDD | コメントする

詰将棋のようにTDDでC#を学ぶ実験(2)

逆引き大全のほうは、サンプルに対して1tipsという制限があるので、あまり盛り込めないが、詰将棋 TDD のほう(あるいは「覚醒プログラム学習」)のほうは、1問(1プロジェクト)に対して、ごっそと覚えるべきことを詰め込んである。というか、クラスの構造とかファイルストリームとか別々に書くと面倒なので、ひとつのテストクラスにしてテストメソッドだけ分けるというスタイルにしている。 項目の出し方は、IDEF0 や五行を使っているのだが、そもそものネタは patterns & practices に則っている。パフォーマンス・チューニングをする上で、 CPU メモリ ストレージ(ファイルシステム) ディスプレイ データベース ネットワーク を考える。業務システムで何をするかによるので、何処かが「ボトルネック」になる。ボトルネックを解決する仕組みは「クリティカルチェーン」を参考にすればよいだろ … 続きを読む

カテゴリー: C#, TDD | コメントする

詰将棋のようにTDDでC#を学ぶ実験

「ハチワンダイバー」を通読したので、浦野真彦著「1手詰めハンドブック」を買いました。子供用にどうぶつしょうぎを買っている訳ですが、結構いけそうなので、それならば詰将棋を試してみようという次第です。自分で読むというのもあるけど。私は、7手詰め位でギブアップですね。 将棋とプログラミングは似ている プログラミングは、新しい問題を解決すると同時に、既存の問題を解決する手段でもあります。新しい問題ってのは、人工知能とかVRとか、新しい技術ですよね。なんらかの技巧を駆使して実現するわけですが、一方で、みずほ銀行リプレースのような既存の技術の積み重ねで成り立っているところもあります。所謂、社内の情報システムの構築なんかは、大抵はこの「既存の技術」の組み立てで十分だったりします。そのあたりを主な仕事にしていると、面白いか面白くないかは別として、仕事としてやっていけるかが重要になります。 それを将棋に例え … 続きを読む

カテゴリー: C#, TDD | コメントする

ViewModel をテスト可能にするためにファイルストリームを活用するパターンを考察

一般的に(?)MVVM パターンを使うと xUnit が作りやすい。主に Model やロジックに対して xUnit を適用すると TDD 的にあとあと楽なのですが、もう一歩進んで ViewModel にも xUnit を適用してみましょう、という話の続きです。 まぁ、普通にオブジェクト指向のクラスを作っている中で、ある程度隠蔽化されていれば xUnit を使うのもそう難しくはないんですけどね。ただ、実務的にやってみると GoF の組み合わせパターンを使ったときに xUnit の適用どころが難しかったり、最初の簡単なロジックは xUnit を使っていたけど、だんだん拡張していくうちに xUnit が使えなくなってしまったという場合もよくあります。そうそう。プロジェクトが進む中で結合テストをしていて、あまりにも設定がややこしくなってしまった xUnit のコードはばっさり捨ててしまっても構い … 続きを読む

カテゴリー: 開発, C#, TDD | コメントする

Is TDD Dead ? のその後

今更 TDD なのか?それとも今から TDD なのか…という疑問が出たのは既に2年前なのですが、状況はあまり変わっていないような気がします。 TDD is dead. Long live testing. (DHH)http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.htmlテスト駆動開発(TDD)はもう終わっているのか? Part 1 | 開発手法・プロジェクト管理 | POSTDhttp://postd.cc/is-tdd-dead-part1/テスト駆動開発(TDD)はもう終わっているのか? Part 2 | 開発手法・プロジェクト管理 | POSTDhttp://postd.cc/is-tdd-dead-part-2/Is TDD dead? – YouTubehttps://www … 続きを読む

カテゴリー: 開発, TDD | コメントする

TDD はロストテクノロジー化しているか?

何故か、英語で CppUnit の解説を小一時間することになってしまったので、その後の展開的に残しておく。 使っている人は使っているらしいが github のコードを見ると大抵のフレームワーク系のライブラリは、 test フォルダがあってテストプロジェクトがある。まあ、実際に自分でやってみると適当な xUnit を書かないと立ち行かない場合が多い(スタート時点の複雑さに追いつかない&後で混乱して修正コストが高くなる)のとで残しておくのと、ライブラリのマニュアル的なものとして残しておくと便利なのでちらっと書いておくとよい。 が、どこでどう間違ってしまったのか、様々な原因で身の回りに実務で TDD をやっている人は少ない…というかいない。これは主に業務アプリを作っている私だからなのか、最近はあまりであることが少なくなったのか分からないが、テストコードを書いている人は少ない。変わりに、従来通りの … 続きを読む

カテゴリー: 開発, TDD | コメントする