ํด๋น ๊ธ์ Kent-Beck์ ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ By Example ์ด๋ผ๋ ์ฑ ์ ์ฝ๊ณ ํ์ตํ ๋ด์ฉ์ ์ ๋ฆฌ ๋ฐ ํ๊ณ ํ๋ ๊ธ ์ ๋๋ค. ์์ธํ ์ฌํญ์ YES 24 ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ ์์ ํ์ธํด์ฃผ์ธ์.
ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ - Test Driven Development By Example (Kent-Beck)
- ์ธ์ฌ์ดํธ(insight)
- ์ง์์ด: Kent-Beck
- ์ฎ์์ด: ๊น์ฐฝ์ค, ๊ฐ๊ท์ญ
- ์ถ๊ฐ์ผ: 2014.02.15
๋์์จ ๋ชจ๋๋ฅผ ์ํ ํ๋ฑ
์ง๋ ์๊ฐ์ ์ฐ๋ฆฌ๋ Dollar์ Franc์ ํตํ๋ฅผ ์ง์ํ๊ธฐ ์ํด์ Dollar ํด๋์ค๋ฅผ ๋ณต์ฌํ์ฌ Franc ํด๋์ค๋ฅผ ์์ฑํ๋ค.
์ผํธ ๋ฒก ํ๋์ด ๋ง์ํ์๋ 1 ~ 4๋จ๊ณ ๊น์ง ๋งค์ฐ ๋น ๋ฅธ ์๊ฐ ์์ ๋์ฐฉํ๋๋ฐ, ๋ฌธ์ ๊ฐ ์๋๋ผ.
๋ฐ๋ก ์์ฒญ๋ ์ค๋ณต.
๊ทธ๋ฅ ์ค๋ณต ๋ฉ์ด๋ฆฌ์ด๋ค.
์ด ์ค๋ณต ๋ฉ์ด๋ฆฌ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ์ฐ๋ฆฌ๋ ์ด๋ค ๋ฐฉ๋ฒ์ ์ ํํ ์ ์์๊น?
์์
๋ฐ๋ก ์์์ ์ด์ฉํ ์ ์๋ค.
๋์ผํ ๊ธฐ๋ฅ์ ์ํํ๋ ํด๋์ค 2๊ฐ๊ฐ ์กด์ฌํ๋ค๋ฉด ์์ ํด๋์ค ํ๋๋ฅผ ์์ฑํ๋ฉด ํด๊ฒฐ๋ ์ ์๋ค.
class Dollar {
private int amount;
Dollar(int amount) {
this.amount = amount;
};
public Dollar times(int multiplier) {
return new Dollar(amount * multiplier);
}
public boolean equals(Object object) {
Dollar dollar = (Dollar) object;
return amount == dollar.amount;
}
}
class Franc {
private int amount;
Franc(int amount) {
this.amount = amount;
};
public Franc times(int multiplier) {
return new Franc(amount * multiplier);
}
public boolean equals(Object object) {
Franc franc = (Franc) object;
return amount == franc.amount;
}
}
์์
class Money {
}
class Dollar extends Money{
private int amount;
// ... ์๋ต
}
class Franc extends Money {
private int amount;
// ... ์๋ต
}
์ด์ amount
๋ํ ์ฎ๊ธธ ์ ์๋ค.
class Money {
protected int amount
}
class Dollar extends Money{
// ... ์๋ต
}
class Franc extends Money {
// ... ์๋ต
}
์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
์ด์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก equals()
๋ฅผ Money๋ก ์ฎ๊ธฐ๋ฉด ์ค๋ณต์ด ์ผ๋จ ์ฌ๋ผ์ง๋ค.
๋๊ธ