Android、Java、Web系、Linux、マラソン等の備忘録

2014/01/24

「Let's Play TDD #3: Cleaning Up My Mess」の写経

0 件のコメント
写経すると良いって聞いて...

写経の対象

Let's Play TDD #3: Cleaning Up My Mess - YouTube
http://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]を買いました。英語音声と英語字幕にして、単語などを調べつつ視聴してるところです。

Gist

PR

0 件のコメント :

コメントを投稿