スキップしてメイン コンテンツに移動

「Let's Play TDD #2: Peering Dimly Into the Future」の写経

写経すると良いって聞いて...

写経の対象

Let's Play TDD #2: Peering Dimly Into the Future - YouTube
https://www.youtube.com/watch?v=1-sBRRWBxSg

最初のコード


  • 前回のコードからパッケージ名をfinacesに変更


利子を付けて残高計算

  • 翌年の残高を利子を付けて求める
    • そういうメソッドがあるものとして、テストを記述
      • 預金10000ドル
      • 年利10%で翌年のインスタスを取得 ←new!
      • 残高が11000ドルになっていることを確認する
    • それに伴いSaveingAccount側に利子を設定するnextYearというメソッドをEclipseのコード補完で追加

RED

assertEqualsで失敗するよう修正

  • 現状、NullPointerExceptionでテストが失敗している
  • テストの成否はassertEqualsの部分で行うよう修正するものと思われる
    • nextYearメソッドの中身を適当にインスタンスを生成するだけ

RED

金利計算を実装

  • 上記のテストを元にnextYearメソッドの中身に利子計算の処理を実装
  • 動画では、テストを繰り返しながら結果がGreenになるまで計算式を試行錯誤するデモをしてました
  • 以下、試行錯誤してる模様

RED


RED


RED


RED


GREEN

60年分くらい金利計算を確認?

  • このあたり英語が聞き取れないので、何を意図してMainクラスを作成したのかイマイチわかってません
  • 上記で作成したnextYearをfor文で60年分くらいループさせて標準出力で値が正しいことを見てます
出力結果はこんな感じ↓
0:$10000
1:$11000
2:$12100
3:$13310
4:$14641
5:$16105
6:$17715
7:$19486
8:$21434
9:$23577
・・・・

おわり

今回は、利子の計算式を例に括弧の位置がズレてたりなどのコーディングミスをTDDであぶり出して正しい計算式を作るといった感じでしょうか。このnextYearメソッドをテストしないで、nextYearを扱う一連の処理でのテストだとどこが間違ってるか分かり辛いでしょうね。
あと、英語があまりヒアリングできないので、何を意図してるかはコード頼みなところがあります.....。

Gist

PR

コメント

このブログの人気の投稿

Javaでprivateなfieldやmethodにアクセスする

JUnitでテストしてると、privateなフィールドにアクセスして、値を参照したりセットしたりしたくなるわけですが、よく使うのでメモしておきます。 例えば、次のような対象のクラスがあるとします。 public class ParentClass { private String hoge = "ParentClass!!"; public void dispMsg() { System.out.println("dispMsg:" + hoge); } private void privateDispMsg(String msg) { System.out.println("dispMsg:" + msg); } }

GolangでWindows GUIアプリケーション

GUIアプリ作成の前提 社内ツールとしてexeで配布 開発環境はGoLandを使う 社内ツールとしてexeを配布ということであれば、Visual StudioでC#による開発だと思います。しかしながら、Go言語を習得したいのと、GoLandの補完機能が便利で、Android Studio使っていたこともあり、とっつきやすいという点からGo縛りでGUIアプリケーションを考えたいと思います。 lxn/walk Windows application library kit for Go. Windows向けしか考えていないので、まずこのライブラリなのですが、ボタンやコンボボックスが思ったように並ばなかったり、手軽にイメージボタンを配置したりなど、簡単にレイアウトを変更できない課題に直面しました。レイアウト作成だけで時間を取られてしまいます。そう言えば、Androidアプリ開発のときは、XMLでデザイン部分を切り離してたのを思い出して、今回の調査の運びとなりました。 fyne-io/fyne Cross platform native GUIs designed for Go based on Material Design. Supports: Linux, macOS, Windows, BSD, iOS and Android. walkと比べると、クロスプラットフォームで作成できるのですが、こちらもコードの中にデザインを書いていく形でした。 therecipe/qt therecipe/qt allows you to write Qt applications entirely in Go or JavaScript. Qt Creatorなるものがあるようで、デザイン部分を切り離せる印象はあるものの、最新のPCでもビルドに時間がかかるようで、学習コストもかかるという記事を見かけて断念しました。 どうしたものかとツイートしましたら、下記のようにご助言をいただいた。 同じ課題に対し色々試した結果、PWAのフルキャッシュドに落ち着いた。中身はGo+WASMで。 https://t.co/e60whDTV16 — のぼのぼ📡 (@nobonobo) July 21, 2020 PWA 早速調べてみました。Googleが進めているプロジェクトで、ネイティブアプリのよ

Eclipseの高速化メモ

Eclipseが重いと一言に言っても、いろいろな工程での話があると思いますが、過去記事のなども含めてこの記事にピックアップしておきたいと思います。以下はWindows環境での話です。