Upload
yasuhiko-yamamoto
View
122
Download
0
Embed Size (px)
Citation preview
わんくま同盟名古屋勉強会 #35 2
スピーカー紹介: biac as 山本康彦
• 宇宙世紀以前の生まれスプートニク1号より3ヶ月ほど前
• 最初は HONDAクルマの設計/研究を10年くらいやってた
• 今は BluewaterSoftを名乗ってアプリ開発とか技術解説記事とか
• 「NUnitの全貌」⇒CodeZine 2012/4
わんくま同盟名古屋勉強会 #35 3
【CM】 C#で始めるテスト駆動開発入門
• CodeZine連載再開♪
• #08「ユニバーサルWindowsアプリのユニットテスト(前編)」
• #09「ユニバーサルWindowsアプリのユニットテスト(後編)」
• #10「状態を持つクラスをテストファーストする」
わんくま同盟名古屋勉強会 #35 4
【CM】有償セミナー@NSC
• 名古屋ソフトウェアセンターhttp://www.nagoya-sc.co.jp/
• 2015/6/11~12
【開催確定】XAML入門(WPF/ストアアプリ)
• 2015/7/2~3
Windows ストアアプリ開発手法(C#/VB.NET)
わんくま同盟名古屋勉強会 #35 5
TDD = テストファースト + リファクタリング
•テストファースト: REDと GREENの繰り返し
•リファクタリング: GREENを維持したまま実装を改善
失敗するはずのユニットテストを1つ書き、失敗することを確認 (=RED)
ユニットテストに通るだけの実装を追加し、成功することを確認 (=GREEN)
わんくま同盟名古屋勉強会 #35 6
TDD 3原則 by Robert C Martin
•ArticleS.UncleBob.TheThreeRulesOfTdd (2005) より。※実質は「テストファースト 3原則」
1. 失敗するユニットテストを成功させるためにしか、プロダクトコードを書いてはならない。
2. 失敗させるためにしか、ユニットテストを書いてはならない。コンパイルエラーは失敗に数える。
3. ユニットテストを1つだけ成功させる以上に、プロダクトコードを書いてはならない。
わんくま同盟名古屋勉強会 #35 7
TDD MANTRA
• 『Test-Driven
Development: By
Example』からの引用
• テスト駆動開発において我々は、・自動テストが失敗している場合に限り、新しいコードを書く・重複を取り除く
• OneDrive で公開http://1drv.ms/1uz3Z2P
わんくま同盟名古屋勉強会 #35 9
リファクタリング by Martin Fowler
•「リファクタリングとは、コードの外的な振る舞いを変更せずに、内部の構造を作りかえること」http://refactoring.com/
Refactoring is … altering its internal structure
without changing its external behavior.
わんくま同盟名古屋勉強会 #35 10
リファクタリングを学ぶには?
•「リファクタリング―既
存のコードを安全に改善する―」 by Martin
Fowlerhttp://amzn.to/1C6rzHL
※原書は 1999/6 発行
わんくま同盟名古屋勉強会 #35 11
「リファクタリング」は造語
•「リファクタリング」は造語
•考案者は不明。Fowler ではない(例: 1992年の論文)
The refactorings are defined to be behavior
preserving, (リファクタリングは、振る舞いを維持するように定義される…)
わんくま同盟名古屋勉強会 #35 14
リファクタリングの成功基準
• 1. コードの外的な振る舞いは不変
• 2. 内部の構造は改善された
• 両方できて、リファクタリング成功!
• 1. を保証するにはどうする?
• Fowler は、ユニットテストで 1. を保証
• リファクタリングのサポートツール (機能)
を信頼する、というのもアリ
わんくま同盟名古屋勉強会 #35 15
リファクタリングの対象範囲
• リファクタリングの対象範囲= コードの外的な振る舞いを不変に保つ範囲
• メソッド / クラス / クラス群 / バイナリファイル / プログラム全体…どれを対象範囲にしてもよいけど、しかし、範囲が広いと、外的な振る舞いの不変を確認するのがタイヘンなことに!
わんくま同盟名古屋勉強会 #35 16
Visual Studio Community
•無償の Visual Studio
•ライセンス制限アリ (個人利用なら無条件でOK!)詳細は⇒http://www.microsoft.com/ja-jp/dev/products/community.aspx
•Professionalと同等 (VS2015では「ほぼ」同等)
•ダウンロード http://aka.ms/vscomm2013dl
わんくま同盟名古屋勉強会 #35 17
簡単なリファクタリングの例
・変数の抽出 (Extract Variable)
・メソッドの抽出 (Extract Method)
演習タイム
Visual Studio Community エディションはテストファースト最強♪