午前中に2時間ほど講演、午後に実際に手を動かしてTDDをやってみるというものでした。メインはもちろん午後の、TDD実体験なのですが、午前中の@t_wadaさんによる講演パートでも、気付かされることがいくつかありましたので、まずはそれを書き留めておきたいと思います。TDDは、動かすー>きれいにするコーディングのゴールは、「きれい」で「動く」プログラムを作ること。そのためのアプローチとして、「先にキレイな設計をきちんとしてから動くものを作る」アプローチと、「とりあえず動かしてからキレイにする」アプローチの二通りがあります。TDDはこのうち、先に動かす方のアプローチ。最終的なゴールは「動作する、きれいなコード」なので、動けばいいというわけではなく、キレイにすることが大切になります。Red->Green->Refactorで一番大事なのはRefactorテストを書いて、そしてそれが動くようになったら、すぐ次の機能に進みたくなるものですが、動作する「きれいな」コードを作るのが目的ですので、最も時間をかけるべきはRefactorです。いうように、リファクタリングに時間をかけることが大切だそう。無事テストがGreen!になったら、すぐ次に行くのではなく、プロダクションコードやテストコードを眺めて、違和感のあるところをどんどんきれいにしていく時間をとるのが大切とのことです。Redにもどる、「黄金の回転」が重要であり、特にその中に、Refactorが含まれていることは非常に大事です。*1さらに、その回転を、小さく速くまわすことが大切とのこと。3分・3分・10分のリズムで。それを1分・1分・3分のリズムへ、というように、小さく速い黄金の回転が重要とのことです。思ったのが不安をテストにするTDDにおけるテストの目的は、不安の解消が目的になります。今から使うライブラリに不安がある、など。逆に言うと、getter/setterのようにバグっていないことがほぼ明らかなものは、TDDの文脈においてはテストする必要がないとのことでした。※とはいえ、メンテナンス性を考えるとカバレッジの高いテストは残しておきたいわけで(さすがにgetter/setterは要らないですが)、TDDのために書くテストと、保守性を上げるために残すテストコードの立ち位置は少し違うのかもしれないと思いました。読者になる検索リンクはてなブログブログをはじめる週刊はてなブログはてなブログPro最新記事awkで特定の列を除外して出力するWindows10にOracleをインストールしようとしたらありがちな罠にハマった古いプログラムからも学ぶことがある...と思う。#rtechconf月別アーカイブ参加グループプログラミングインターネットテクノロジーはてなブログをはじめよう!taichiwさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。