TDDの勉強会に参加
テスト駆動開発(TDD)の勉強会に参加してきました。
詳しい内容は以下をご覧下さい。
http://kanazawa-process.g.hatena.ne.jp/katzchang/20090517/1242513168
http://d.hatena.ne.jp/katzchang/20090517/p1
テキストには「テスト駆動開発入門」を使っています。
以下、感想と、今回進んだところ(9章)までのソースコードです。
感想
実は勉強会形式のイベントに参加するのは初だったのですが、
いきなり発表者のご指名をいただいたり。
基本的に写経(テキストを読んで、書いてあるコードを入力する)を
すればよいので、なんとかなりました。
id:Nagiseさんのように薀蓄は語れませんが、学習者視点での疑問とかを
出すことはできたかな、と。
あとは、はてなの話題とか濃い話がフツーにできる環境ってのが新鮮でしたw
はじめまして感も、良い意味であまり無く。
同時に、これまでの自分の勉強不足を痛感したり。
前の職場では「技術も詳しくて、説明とかもやれる人」という位置づけだったけど、
まったくもって井の中の蛙だったんだなー、と。
それから、参加者の使用環境が!
さすがです。*1
ソースコード
今回進んだ9章完了時点までのコードを上げておきます。*2
import junit.framework.TestCase; public class MoneyTest extends TestCase{ public void testMultiplication(){ Money five = Money.dollar(5); assertEquals(Money.dollar(10), five.times(2)); assertEquals(Money.dollar(15), five.times(3)); } public void testFrancMultiplication(){ Money five = Money.franc(5); assertEquals(Money.franc(10), five.times(2)); assertEquals(Money.franc(15), five.times(3)); } public void testEquality(){ assertTrue(Money.dollar(5).equals(Money.dollar(5))); assertFalse(Money.dollar(5).equals(Money.dollar(6))); assertTrue(Money.franc(5).equals(Money.franc(5))); assertFalse(Money.franc(5).equals(Money.franc(6))); assertFalse(Money.franc(5).equals(Money.dollar(5))); } public void testCurrency(){ assertEquals("USD", Money.dollar(1).currency()); assertEquals("CHF", Money.franc(1).currency()); } }
public abstract class Money { protected int amount; protected String currency; Money(int amount, String currency){ this.amount = amount; this.currency = currency; } public boolean equals(Object object){ Money money = (Money) object; return amount == money.amount && getClass().equals(money.getClass()); } static Money dollar(int amount){ return new Dollar(amount, "USD"); } public static Franc franc(int amount) { return new Franc(amount, "CHF"); } abstract Money times(int multiplier); String currency(){ return currency; } }
public class Dollar extends Money{ Dollar(int amount, String currency){ super(amount, currency); } Money times(int multiplier){ return Money.dollar(amount * multiplier); } }
public class Franc extends Money{ Franc(int amount, String currency){ super(amount, currency); } Money times(int multiplier){ return Money.franc(amount * multiplier); } }
さいごに
Aキーのキートップがはずれやすくなっていて、何度か地味に修理。
これ書いてるときもまた外れました…