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

「Let's Play TDD #1: How Does This Thing Work, Again?」の写経

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

写経の対象

▶ Let's Play TDD #1: How Does This Thing Work, Again? - YouTube
https://www.youtube.com/watch?v=f3G7gu1IHws

最初のコード

失敗するようfail()を入れてる
RED

fail()を消した


GREEN

対象があるものとしてテストを記述

  • まず_TestSomethingをリネーム→_SavingsAccountTest.java
  • _SavingsAccountTest.java
    • nothingメソッドにSavingAccount.javaというクラスがあるものとして記述しEclipseのコード補完でファイルを追加
    • 100を預金(deposit)すると残高(balance)が100であることを確認
  • SavingAccount.javaの微調整
    • deposit()のパラメータ名変更
    • balance()の戻り値の型をObject→int
    • 中身はまだ実装しない

RED

対象の中身を実装

  • SavingAccount.java
    • 預金された値を残高に渡せるようbalanceフィールドを追加
    • 預金メソッド:balanceに追加
    • 残高メソッド:balanceを返す


GREEN

引き出しメソッドの追加

  • _SavingsAccountTest.java
    • nothing()をリネーム→depositAndWithdrawal()
    • 100を預金→残高100になってることを確認
    • 50引き出す→残高50になってることを確認
  • コード補完でSavingAccountにwithdraw()メソッドを追加
    • 中身はまだ実装しない

RED

引き出しメソッドの中身を記述

  • withdrawメソッドで残高を差し引く

GREEN

いきなり引き出すと負数になるテスト

  • _SavingsAccountTest.java
    • negativeBalanceIsJustFineテストを追加
    • 預金しないで引き出す
    • 残高が負数になっていること

GREEN

おわり

ソースはGistの1ファイルに2ファイルAttachしてしまったので、ブログに貼り付けると常に2つ分表示されてしまいました。今度から1ファイル毎にAttachした方が見やすいかも....。でも、差分は2つの方が見やすいと思いますが。
あと、こんなやり方で続くのだろうか........。

Gist

Let's Play TDD #1: How Does This Thing Work, Again?の写経
https://gist.github.com/takaiwa/8396586

Gistの差分

Revisions · SavingAccount.java
https://gist.github.com/takaiwa/8396586/revisions

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環境での話です。