写経すると良いって聞いて...
http://www.youtube.com/watch?v=CdCNJYKqmi0
写経の対象
Let's Play TDD #4: Gaining on Capital Gains - YouTubehttp://www.youtube.com/watch?v=CdCNJYKqmi0
なんか前回の続き(?)があったようで
- SavingAccountYearの不要なメソッドを削除
- deposit() 預金
- withdraw() 引き出し
GREEN |
balance()も削除
RED |
Mainプログラムと依存関係ないように
- 動くと例外を投げるように修正
RED |
まだbalance()を使ってる箇所残ってた
- というかここまでコンパイルエラー...
- balance() → startingBalance
GREEN |
Main.javaの削除
GREEN |
年利メソッドのテストを追加
- SavingAccountYear
- interestRate()をコードの中程へ移動
- _SavingsAccountYearTest
- interestRate()を追加して、正しい値を返すことを確認
GREEN |
メソッドの並びを整える
- SavingAccountYear
- endingBalance()を位置を一つ上に
- たぶん、メソッドが使われるであろう順番に
GREEN |
メソッドの抽出
- SavingAccountYear account = new SavingAccountYear(10000, 10);という記述が重複しているので1つのメソッドにまとめる
- やり方(Eclipse)
- 該当の行を選択
- 右クリック → Refactor → Extract Method
- メソッド名(createAccount)を入力してOKボタン
- 作成されたcreateAccount()を下の方へ移動
GREEN |
メソッドのインライン化
- (その前に)先ほどのcreateAccountメソッドをリネーム→newAccount
- メソッドの抽出と逆のリファクタリング
- わかりやすいメソッドはインライン化した読みやすくなることがある
- やり方(Eclipse)
- 変数accountを選択
- 右クリック → Refactor → Inline
- 確認ダイアログのOKボタン
- 以下のテストに行う
- startingBalance()
- interestRate()
- endingBalance()
GREEN |
各テストメソッド名をより具体的な名前に修正
GREEN |
キャピタルゲイン
- キャピタルゲイン税を受けることなく元金を引き出すことができることを確認するテストを追加
- 引き出しメソッド復活
RED |
年利を0にして動かしてみる
RED |
年利を考慮して結果を修正
- 年利を10に戻す
- endingBalance()の結果を9900に修正
RED |
引き出しメソッドの中身を記述
GREEN |
先ほどのテストメソッド名を修正
- ここではキャピタルゲイン税は関与しなかったので
- 引き出しメソッドのテストということで
GREEN |
キャピタルゲイン...?
- _SavingsAccountYearTest
- キャピタルゲインを受けるテスト追加
- SavingAccountYear
- キャピタルゲイン指定のコンストラクタを追加
RED |
エラー修正
- _SavingsAccountYearTest
- assertEqualsのところに少数の計算を入れてるのでdouble型と判定されてしまい型が合わないと言われてる模様
- 少数の計算をやめて、計算結果の整数を入れる
- →assertEqualsのところでテストが失敗するようになる
RED |
おわり
- コードの整理回&キャピタルゲイン機能の実装始め
- 割りと躊躇なくメソッドを消してる
- バージョン管理ツールなどにコミットしながらということでしょう
- 可読性
- テストコードのメソッド名は具体的に
- プロダクトコードは並びも見やすく
- リファクタリング
- メソッドの抽出
- メソッドのインライン化
- これらは、何気なくテキスト編集でやってたがEclipseのリファクタリング機能で出来ることがわかった
- よくわかってない
- キャピタルゲイン
- 辞典によれば:資本利得,資産売却益, 値上がり益
- 何をもってテスト対象としてるのかが不明
- 僕のリスニング力不足
- 基本はプログラマーが不安に思うところだと思うけど(参考:第10回 テストの最小単位は不安:[動画で解説]和田卓人の“テスト駆動開発”講座|gihyo.jp … 技術評論社 )
- 引き出し(withdraw())メソッドを序盤で削除したが終盤で復活
- 序盤では必要なかったがキャピタルゲインを計算するのに必要になった?
- 印象↓
TDD Boot Camp from Takuto Wada
追記:2014/03/11
なんか三日坊主みたいになってますが、ちょっとリスニングを鍛えてから再開します。前の記事でフルハウスの英語字幕を見ながらとか言ってましたが、ちょっと習慣付けられそうになかったので、今はニュースで英会話のラジオを録音して、晩ご飯作りながら聞いて、寝る前に書き取りしてます。さて、どこまで鍛えたら再開するか....
コメント
コメントを投稿