ํด๋น ๊ธ์ Kent-Beck์ ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ By Example ์ด๋ผ๋ ์ฑ ์ ์ฝ๊ณ ํ์ตํ ๋ด์ฉ์ ์ ๋ฆฌ ๋ฐ ํ๊ณ ํ๋ ๊ธ ์ ๋๋ค. ์์ธํ ์ฌํญ์ YES 24 ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ ์์ ํ์ธํด์ฃผ์ธ์.
ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ - Test Driven Development By Example (Kent-Beck)
- ์ธ์ฌ์ดํธ(insight)
- ์ง์์ด: Kent-Beck
- ์ฎ์์ด: ๊น์ฐฝ์ค, ๊ฐ๊ท์ญ
- ์ถ๊ฐ์ผ: 2014.02.15
์์งํ ๋งํ์๋ฉด
ํตํ๋ ์ฌ๋ฌ ๊ฐ์ ๋๋ผ์์ ์ฌ์ฉํ ์ ์๋ค.
๋ฏธ๊ตญ์ด๋ฉด Dollar, ํ๋์ค๋ฉด Franc, ํ๊ตญ์ด๋ฉด Won
์ด๋ฐ ๋ค์ํ ์ข
๋ฅ์ ํตํ๋ฅผ ์ง์ํด๋ณด์
Dollar ๋ณต์ฌ
์ฐ๋ฆฌ๋ ๋ค์ํ ํตํ๋ฅผ, Franc๋ฅผ ์๋ก ์ง์ํ๋ค๊ณ ํ๋๋ฐ, ์ฌ์ค ์๊ฐํด๋ณด๋ฉด Dollar๋ Franc์ด๋ ๋์ด ํ๋ ์ผ์ ๋ค ๋๊ฐ๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๋ ์ผ๋จ Dollar๊ฐ ํ๋ ์ผ์ ๊ทธ๋๋ก ๋ณต์ฌ ๋ถํ๋ฃ๊ธฐํ ๊ฒ์ด๋ค.
class Dollar {
private int amount;
Dollar(int amount) {
this.amount = amount;
};
// ... ์๋ต
}
class Franc {
private int amount;
Franc(int amount) {
this.amount = amount;
};
// ... ์๋ต
}
์์ ์ฝ๋๋ ๋ณต์ฌ ๋ถํ๋ฃ๊ธฐ๋ผ๋ ์ฃ์
์ ์ ์ง๋ ๋ค.
ํ์ง๋ง ์ด์ฏค์์ TDD ์ฌ์ดํด์ ๋ํด์ ๋ค์ ์๊ฐํด๋ณด์.
- ํ ์คํธ ์์ฑ
- ์ปดํ์ผ๋๊ฒ ํ๊ธฐ
- ์คํจํ๋์ง ํ์ธํ๊ธฐ ์ํด ์คํ
- ์คํ๋๊ฒ ๋ง๋ฆ
- ์ค๋ณต ์ ๊ฑฐ (๋ฆฌํฉํ ๋ง)
์ฒ์ ๋ค ๋จ๊ณ๋ ๋น ๋ฅด๊ฒ์งํ๋์ด์ผ ํ๋ค.
ํ ์คํธ ์์ฑ๊ณผ ์ปดํ์ผ ๋๊ฒ ํ๊ธฐ
์ด๋ ์ฐ๋ฆฌ๊ฐ Dollar ํด๋์ค๋ฅผ ์ ์์ฑํด๋จ๊ธฐ ๋๋ฌธ์ ๋ณต์ฌ ๋ถํ๋ฃ๊ธฐ๋ฅผ ํ๋ค๋ฉด ์ ํํ ์ฐ๋ฆฌ๊ฐ ์์ํ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ํ ์ ์๋ค.
์ด๊ฒ ๋ฐ๋ก TDD๊ฐ ๊ฐ๋ ์๊ธฐ๋ฅ์ค ํ๋์ด๋ค.
์คํจํ๋์ง ํ์ธํ๊ธฐ ์ํด ์คํ
์ฐ๋ฆฌ๊ฐ ์ฝ๋๋ฅผ ๋ณต๋ถํ์ผ๋ ์๋ง ํด๋น ์ฝ๋๋ ์คํจํ ๊ฒ์ด๋ค.
์? ํด๋์ค ๋ค์์ด ์ค๋ณต๋์์ผ๋.
๊ทธ๋ผ ์คํจ๋ฅผ ์์ํ๊ณ ์คํํ์.
์คํ๋๊ฒ ๋ง๋ฆ
์คํจ๋ฅผ ํ์ธํ๊ณ ์ด์ ์คํ๋๊ฒ ๋ง๋ค๋ฉด ๋๋ค.
Dollar๊ฐ ์ค๋ณต๋์์ผ๋ Dollar๋ฅผ Franc์ผ๋ก ๋ฐ๊ฟ์ฃผ์.
์ค๋ณต ์ ๊ฑฐ
์ผํธ ๋ฒก์ 1 ~ 4๋จ๊ณ ๊น์ง๋ฅผ ์ต๋ํ ๋น ๋ฅธ ์๊ฐ์์ ๋๋ด๋ผ๊ณ ํ๋ค.
์ฐ์ ๊ณต์ฉ equals๋ฅผ ๋ง๋๋ ๊ฒ์์ ๋ถํฐ ์ค๋ณต ์ ๊ฑฐ๋ฅผ ์คํํด๋ณด์.
๋๊ธ