写経すると良いって聞いて...
http://www.youtube.com/watch?v=jnMMkXzpOS4
そろそろ何言ってるほとんど聞き取れない状態での写経がきつくなり、リスニングできるようにとフルハウス〈ファースト〉セット1 [DVD]
を買いました。英語音声と英語字幕にして、単語などを調べつつ視聴してるところです。
写経の対象
Let's Play TDD #3: Cleaning Up My Mess - YouTubehttp://www.youtube.com/watch?v=jnMMkXzpOS4
最初のコード
- 前回のコードからクラス名にYearを付けるなどのリネーム
- SavingAccountYearのコンストラクタに預金と年利を与え、終了残高を求めるテスト:endingBalance()
- 10000ドル預金して年利10%で残高11000ドルを確認する
- SavingAccountYearへEclipseのコード補完で追加
- 引数を渡せるコンストラクタ
- 終了残高を返すメソッド
- 追加したものに中身は記述しない
RED |
中身の実装
- SavingAccountYear
- コンストラクタ
- 引数をフィールドへ渡す
- endingBalance()
- 終了残高を求める
GREEN |
最初のテストを削除1
- depositAndWithdrawal()を削除してとりあえずテスト
GREEN |
最初のテストを削除2
- _negativeBalanceIsJustFine()も削除
翌年の開始残高が今年の終了残高と同じであること
- _SavingsAccountYearTest
- nextYear()を書き換え
- SavingAccountYearはnextYear()で年利を設定していたが、コンストラクタで渡すようになったのでこのメソッドの引数を削除
- テストのメソッド名を変更→ nextYearsStartingBalanceShouldEqualThisYearEndingBalance()
- SavingAccountYear
- 開始残高を受け取るstartingBalance()を追加
RED |
先ほどのテストを無視するアノテーションを付ける
- 最初に開始残高メソッドをTDDで実装するため
GREEN |
開始残高メソッドのテスト
- startingBalance()の中身がある前提で_SavingsAccountYearTestにテストを記述
- コンストラクタに渡した残高がそのまま返ってくること
RED |
開始残高メソッドの中身を実装
- テストが通るよう中身を実装
- コンストラクタで保持した値を受け取るだけ
GREEN |
ちょっと整理
- フィールドbalanceをリネーム→startingBalance
- メソッドstartingBalance()をソースの上の方へ
GREEN |
無視するアノテーションを削除
- @Ignoreを削除するとテストが通る
GREEN |
翌年は今年の終了残高でインスタンスを求める
- 翌年の開始残高は今年の終了残高が同じであることが確認できたので
- 翌年のインスタンスは終了残高を渡してインスタンスを生成するよう修正
- 計算式を試行錯誤してnextYear()を実装していたが...
GREEN |
翌年と今年の年利は同じであること
- インスタンス生成に伴い、(おそらく)年利が引き継がれていることを確認
RED |
年利が引き継がれてなかったので修正
GREEN |
おわり
前回までは、ざっくりやりたい事を元にをテスト駆動開発していたような印象で、タイトルのように今回は不要なものは削除して、役割分担してコードが見やすくなった気がします。どこをテストするかは、プログラマーが不安に思うところと言われますが、特に不安に思っていないので、ちょっとピンと来なていない部分もあります(まだ途中ってのもあると思いますが)。そろそろ何言ってるほとんど聞き取れない状態での写経がきつくなり、リスニングできるようにとフルハウス〈ファースト〉セット1 [DVD]
コメント
コメントを投稿