Tambourine作業メモ

主にスキル習得のためにやった作業のメモ。他人には基本的に無用のものです。

2020-05-01から1ヶ月間の記事一覧

MacへSubversionを入れたい

2020年にもなって、svnを使っているプロジェクトに関わることになった。まあ、だからどうと言うことはない。 どうと言うことはないんだけども、Macでのsvnには苦い思い出がある。 かなり前のことだけど、WindowsなどとUnicodeの正規化の扱いが違い、濁点が含…

ケント・ベックの「テスト駆動開発」の写経をRustでやってみる(17)

元のJavaのテストではfiveBucksはMoneyではなくExpressionだった。ここから派生する汎用化を15章では行っている。例えば、plusメソッドがExpressionを受け付けるようにしたり、Expressionにplusメソッドを追加したりだ。これは結局、何がしたいのかというと…

ケント・ベックの「テスト駆動開発」の写経をRustでやってみる(16)

15章。ついに「5ドル+10フラン」のテストを書くぞと、ケント・ベック先生は意気込んでいる。こんなテストを書いている。 @Test public void testMixedAddition() { Expression fiveBucks = Money.dollar(5); Expression tenFrancs = Money.franc(10); Bank b…

ケント・ベックの「テスト駆動開発」の写経をRustでやってみる(15)

さて、もうちょっとコードをキレイにしてから先に進みたい。 今、通貨は文字列で定義されている。Java版だとStringだ。私のRustのコードだと、ここが&'static strになっている。 Rustの&strはヒープに確保された領域に書き込まれたUTF-8シーケンスに対する参…

ケント・ベックの「テスト駆動開発」の写経をRustでやってみる(14)

さて、ここでちょっと立ち止まって、コードを眺めてみよう。 コード全体は今でも100行ちょっとに過ぎない。 #[derive(Debug, Clone)] pub struct Money { amount: f64, currency: &'static str, } impl Money { pub fn dollar(f: f64) -> Money { Money { am…

ケント・ベックの「テスト駆動開発」の写経をRustでやってみる(13)

14章に入る。いよいよ通貨の変更を実装する。2フランを1ドルに換算したい。 本で示されたテストはこうだ。 @Test public void testReduceMoneyDifferentCurrency() { Bank bank = new Bank(); bank.addRate("CHF", "USD", 2); Money result = bank.reduce(Mo…