- ์ฐฝ์ญ:PairProgramming ์์ฒด๊ฐ ์ธ์์ ์ด์์ต๋๋ค. ์์
์ ์๋ง์ถ์ด๋ก ํ๋ ์ ๋ก์จ๋ ์์
์ธ์๋ ์ด๋ ๊ฒ ๋ฉ์ง๊ฒ ์ฝค๋น๋ฅผ ๊ฒฐ์ฑํ ์ ์๋ค๋ ๊ฒ์ ๋๋ผ์ธ ๋ฐ๋ฆ์
๋๋ค. ^^;; ๊ทธ๋ฆฌ๊ณ ๋ณ์๋ช
์ ๊ณ ์น๋ ๊ฒ ์์ฒด๊ฐ Refactoring ์ ๋ค์ด๊ฐ๊ณ ๋งค์ฐ ์ค์ํ๋ค๋ ์ฌ์ค๋ ๊ฐ๋ช
์ด์์ต๋๋ค. ^^;
๊ทธ๋์ PP๋ XP์ ๊ณผ์ ์ Jazz์ ๋น์ ํ๊ณค ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋ฒ ์ ์์ด์ฌ์ ์ ํ๋ก๊ทธ๋๋ฐ์ ์ผ์ฃผ์ผ๊ฐ๋ง ์ฌ์ฉํด ๋ณด์ธ์. ๊ทธ๋ฆฌ๊ณ ๊ฑฐ๊ธฐ์ ๋ฌด์์ ๋ ๋ฐฐ์ ๋์ง ์ด์ผ๊ธฐํด๋ณด๋ฉด ์ฐธ ์ข๊ฒ ๋ค์. --๊น์ฐฝ์ค
- ์ฌ๋:์ฌ๋ฌ ์ฌ๋๊ณผ ์ฒ์์ผ๋ก ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ์ด ํ๋ฉด์ ์ปค๋ฎค๋์ผ์ด์
์ด ์ผ๋ง๋ ์ค์ํ ์ง๋ฅผ ํ์คํ ์์์ต๋๋ค. ์ด์ ๋ถํฐ๋ '๋ง ๋ง์' ํ๋ก๊ทธ๋๋จธ๊ฐ ๋์ด์ผ ๊ฒ ์ต๋๋ค
์ค๋ ์ธ๋ฏธ๋ ์ ๋ง ์๊ณ ํ์ จ์ต๋๋ค
- neocoin : UnitTest์์ ์ถ๊ตฌํ ํ๋ก๊ทธ๋จ์ ์ค๊ณ์์ Divideํด ๋๊ฐ๋ ๊ณผ์ ์ ์ฌํ ๊ฑฐ์ ๋์์ธ ํ์์์ ๊ฑฐ์ ์ํ์ ํ์ต๋๋ค. ๊ทธ๋์ ์ฌํ Test๋ฅผ ์ํ ์ฝ๋๋ค๊ณผ ๋๋ฒ๊ทธ์ฉ ์ฝ๋๋ค์ ํ๋ก๊ทธ๋จ์ ์์ฑํ ๋๋ง๋ค ๊ทธ๋ฐ ๋์์ธ์๋ ๋ง์ ์๊ฐ์ ์์ํ๋๋ฐ, ์์ ํ๋ก๊ทธ๋จ์ ์ถ๋ฐ์ Test์์ ์์ํ๋ค๋ ๋ฐ์์ ์ ํ์ด ์ธ์ ๊น์์ต๋๋ค. --์๋ฏผ
- 1002 : ์ด์ Test Code : Product Code ๊ฐ ์ค๋ณต (return 0 !) ์ OAOO๋ก ํ์ด์ Refactoring ์ ํด์ผ ํ ์ํฉ์ผ๋ก ๊ท์ ์ง๋๋ค๋ ๋ง์ด ๋คํต์๋ฅผ ํ๋ ๋๋ฆฌ๋ ๊ธฐ๋ถ์ด์์ต๋๋ค;;
- TDD๋ฅผ ์ด์คํ๊ฒ๋๋ง ์๋ํ๋ฉด์ ๋๋์ ์ด 'TDD ์์์ Product Code ๋ ์ค์ง ํ
์คํธ ๊น์ง๋ง ๋ง์กฑํ๋ ์ฝ๋์ธ๊ฐ' ์์๋๋ฐ. ํํธ์ผ๋ก๋ ์ด๋ ๊ฒ ํด์ํ ์ ์๊ฒ ๋๊ตฐ์. 'ํด๋น ์ค์ผ์ผ์ ๋ํด ๋์ฑ๋ ์ ํํ๊ฒ ์๋ํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ๊ทธ๋งํผ ํ
์คํธ ์ฝ๋ ์์ ๋๋ ค๋ผ.' ํ
์คํธ์ฝ๋ ์์ฒด๊ฐ ์ผ์ข
์ Quality Assurance ๋ฅผ ์ํ ๋ํ๋จผํธ ์ญํ ๋ ๋๋ค๋ ์ ์ ๋ค์ ์๊ฐํ๊ฒ ๋์์ต๋๋ค.
- 'ํ
์คํธ์ฝ๋์ ๋ณดํญ์ ์กฐ์ ํ๋ผ. ์ํฉ์ ๋ฐ๋ผ ์ฑํผ์ฑํผ ๋ณดํญ์ ๋๋ฆด์๋ ์์ง๋ง, ์ํฉ์ ๋ฐ๋ผ์๋ ๋ณดํญ์ ์ขํ์ผ ํ๋ค. ์ฒ์ TDD๋ฅผ ํ๋ ์ฌ๋์ ๋ณดํญ์ ์ขํ์ ๊ฑธ์ด๊ฐ๊ธฐ๊ฐ ์คํ๋ ค ๋ ํ๋ค๋ค'
DoTheSimplestThingThatCouldPossiblyWork. ์ด๊ฒ์ด ํ๋ จ์ด ์์ง ๋๋, TDD๋ฅผ ํ๋ ์ฌ๋์๊ฒ๋ ์ผ๋ง๋ ํ๋ ์ง๋ ์ด๋ฒ RDP ์ง๋ฉด์ ๋๊ผ์๋๋ฐ. ์ด์ฌํ ํ๋ จํ๊ฒ ์ต๋๋ค.
- ์๊น ๋ฐํ๋์๋ ์ด์ผ๊ธฐํ์ง๋ง, Code Review ๋ฅผ ์ํ reverse-TDD (์ ๋๋ก ํด๋๊น์? ์ด๊ฒ๋ ๊ด๋ จ ๋ฌธ์๊ฐ ์์ํ
๋ฐ. ) ๋ฅผ ํด๋ณด๋ ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ๋ค์. ์ฝ๋ ๋ถ์์ ์ํ test-code ์์ฑ์ด์. ์ฆ, ์ด๋ฏธ ๋ง๋ค์ด์ ธ์๋ ์ฝ๋๋ฅผ ํ
์คํธ ์ฝ๋๋ผ๊ณ ์์ ํ๊ณ , ์์ ์ด ์ ๋๋ก ์ดํดํ๋๊ฐ์ ๋ํ ๊ฒ์ฆ๊ณผ์ ์ Test-Code ๋ก ๋ง๋๋ ๊ฒ์ด์ฃ . ์๊ฐ ์์์ผ๋ฉด ์ค๋ ๋ง์ ์๋ํด๋ดค์ํ
๋ฐ, ์๊ฐ์ ๋ง์ ์ซ๊ธด๊ฒ ์์ฝ๋ค์.
- Refactoring ์ฑ
์์๋ Refactor As You Do Code Review ์ Code Review ๋ฅผ ์ํ Refactoring์ ์ด์ผ๊ธฐ ํ๋๋ฐ, Refactoring ์ ์ํด์๋ ๊ธฐ๋ณธ์ ์ผ๋ก Test Code ๊ฐ ํ์ํ๋ค๊ณ ํ ๋ ์ฌ๊ธฐ์ Test Code๋ฅผ ๋ถ์ผํ
๋๊น ์ํตํ๋ ๋ฉด์ด ์๊ธด ํ๊ฒ ๊ตฐ์.
- Refactoring ์ฑ
์์๋ Refactor As You Do Code Review ์ Code Review ๋ฅผ ์ํ Refactoring์ ์ด์ผ๊ธฐ ํ๋๋ฐ, Refactoring ์ ์ํด์๋ ๊ธฐ๋ณธ์ ์ผ๋ก Test Code ๊ฐ ํ์ํ๋ค๊ณ ํ ๋ ์ฌ๊ธฐ์ Test Code๋ฅผ ๋ถ์ผํ
๋๊น ์ํตํ๋ ๋ฉด์ด ์๊ธด ํ๊ฒ ๊ตฐ์.
- TDD๋ฅผ ์ด์คํ๊ฒ๋๋ง ์๋ํ๋ฉด์ ๋๋์ ์ด 'TDD ์์์ Product Code ๋ ์ค์ง ํ
์คํธ ๊น์ง๋ง ๋ง์กฑํ๋ ์ฝ๋์ธ๊ฐ' ์์๋๋ฐ. ํํธ์ผ๋ก๋ ์ด๋ ๊ฒ ํด์ํ ์ ์๊ฒ ๋๊ตฐ์. 'ํด๋น ์ค์ผ์ผ์ ๋ํด ๋์ฑ๋ ์ ํํ๊ฒ ์๋ํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ๊ทธ๋งํผ ํ
์คํธ ์ฝ๋ ์์ ๋๋ ค๋ผ.' ํ
์คํธ์ฝ๋ ์์ฒด๊ฐ ์ผ์ข
์ Quality Assurance ๋ฅผ ์ํ ๋ํ๋จผํธ ์ญํ ๋ ๋๋ค๋ ์ ์ ๋ค์ ์๊ฐํ๊ฒ ๋์์ต๋๋ค.
- nautes : ์ฐธ๊ด์๋ก์ ์์๋๋ฐ .. ๋๋ถ๋ถ์ ์๊ฐ์ ์นด๋ฉ๋ผ ์ฐ๋๋ผ๊ณ ์ฌ๋
์ด ์์์ง๋ง, ์ด ์๋ฆฌ๋ฅผ ๋น์ด์ ๋ฐ๊ฐ์ ์ ์ผ๋ก ์ดฌ์์ ํ์กฐํด์ฃผ์ ๋ถ๋ค๊ป ๊ฐ์ฌ์ ์ฌ์ฃ๋ฅผ ..
- ํฅ๋ฏธ๋ก์ด ๊ฒ์ ์๋๋ฌ์ด ํ๋ก๊ทธ๋๋ฐ์ด์๋ค๋ ๊ฒ์ด์์ต๋๋ค. ํผ์์ ํ๋ ํ๋ก๊ทธ๋๋ฐ(PairProgramming์ ์๊ณ ๋๋ ์๋ก์ด ๊ฐ๋
์ด ์๊ธฐ๋๊ตฐ์. ์๋ Programming์ด๋ผ๋ ๊ฒ์ ํผ์ํ๋ ๊ฑฐ์๋๋ฐ, ์ด์ ํ๋ก๊ทธ๋๋ฐํ๋ฉด pair์ธ์ง single์ธ์ง ๊ตฌ๋ถ์ ํด์ฃผ์ด์ผ๊ฒ ๊ตฐ์)์ ํ๋ ๊ฒฝ์ฐ์๋ ํ์๋ค์ด ์๋์ค๋ฝ๊ฒ ๋ ๋ค๋ฉด ์ ์ง๊ธ ์ค๊ณํ๊ณ ์๊ตฌ๋ํ๊ณ ์๊ฐํ๊ณ , ์กฐ์ฉํด์ง๋ฉด ์ ์ง๊ธ ์ฝ๋ฉํ๊ณ ์๊ตฌ๋..ํ๋ ์๊ฐ์ด ๋ค์๋๋ฐ, PP๋ ๋๊น์ง ์๋๋ฝ๊ฒ ํ๋๊ฑฐ๋ผ๋ ๋๋์ด ๋ค๋๊ตฐ์. ๊ทธ๋ ๊ฒ ๋ํ๊ฐ ๋ง์์ง๋ ๊ฒ์ ์ฝ๋ฉ์ ๋ํ ์ดํด๋์ ์ฆ๊ฐ์ ์๋ก๊ฐ์ ํ๋ ฅ ๋ฑ ๋ง์ ์์นํจ๊ณผ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค๋ ์๊ฐ์ ํ์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ๊ด์ฐฐํ๋ ์ค PairProgramming์์ Leading์ ๊ดํ ์ฌํญ์ ์ธ๊ธํ๊ณ ์ถ์ต์
๋๋ค. ์ฌ์ฉํ๋ ์ธ์ด์ ๋๊ตฌ์ ๋ํ ์ดํด๋ ํ์คํ๋ค๋ ์ ์ ํ์์๋ ์๋ก๊ฐ Pair์ ๋ํ ๋ฐฐ๋ ค๊ฐ ์์ผ๋ฉด ์ข๋ ํจ์จ์ ๋ผ ์ ์์๊บผ๋ผ ์๊ฐํฉ๋๋ค. ๋ฐฐ๋ ค๋ผ๋ ๊ฒ์ ์์ ์ ์๋๊ฐ ์ข ์ ๊ทน์ ์ด์ง ๋ชปํ๋ค๋ฉด ๋ ์ ๊ทน์ ์ธ ํ๋์ ์ด๋์ด ๋ด๋ ค๋ ๋
ธ๋ ฅ์ ๊ธฐ์ธ์ด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค. ์ค์ต์ ํ๋ ๋ํ์์ ์ ๋๋์ ์ง๋ํ์์ผ๋ก ์ด๋๋ ํ๊ณผ PP๋ฅผ ํ๊ณ ์๋ค๋ ์๊ฐ์ด ๋๋ ํ์ด ์์๋๋ฐ. ์ง๋ํ์์ผ๋ก ์ด๋๋ ํ์ ํ ๋ช
์ด ๋๋ฌด ์ฃผ๋์ ์ผ๋ก ์ด๋๋ค ๋ณด๋ ๋ค๋ฅธ pair๋ค์ ์ฃผ์๊ฐ ์ง์ค๋์ง ๋ชปํ๋ ๋ชจ์ต์ ๋ณด์ธ ๋ฐ๋ฉด, PP๋ฅผ ์ํํ๊ณ ์๋ ๋ฏํ ํ์ ๋ ๋ช
๋ชจ๋ ์ง์ค๋๊ฐ ๋งค์ฐ ํ๋ฅญํ ๊ฒ ๊ฐ์์ ์ด๋ฐ ๊ฒ์ด ์ ๋ง ์ฅ์ ์ด ์๋๊ฐ ํ๋ ์๊ฐ์ด ๋ค์์ต๋๋ค. ๊ฒฐ๊ตญ PP๋ผ๋ ๊ฒ๋ ํผ์๊ฐ ์๋ ๋์ด๋ค ๋ณด๋ ํ๋ก๊ทธ๋๋ฐ ์ค๋ ฅ ๋ชป์ง ์๊ฒ ๊ฐ์ธ์ ์ฌํ์ฑ์ด ์ผ๋ง๋ ๋ฐ์ด๋๋ ์ ๋ ์ค์ํ ์ ์ผ๋ก ์์ฉํ๋ค๋ ์๊ฐ์ ํ์ต๋๋ค. (์ ๊ฐ ์๋ก ํ๋ก๊ทธ๋๋ฐ์ค์ ์ดฌ์์ ํ ๊ฒ์ PP๋ฅผ ์ ํ ๋ชจ๋ฅด๋ ์ฌ๋๋ค์๊ฒ ์ด๋ฐ ํ์์ผ๋ก ํ๋ ๊ฒ์ด PP๋ผ๋ ๊ฒ์ ๋ณด์ฌ์ฃผ๊ณ ์ถ์ด์์์ต๋๋ค. ์ดฌ์์ด ๋๋ฌด ์ค๋ ๋น์ถ์๋์ง .. ์ฃ์กํฉ๋๋ค.)
- ํฅ๋ฏธ๋ก์ด ๊ฒ์ ์๋๋ฌ์ด ํ๋ก๊ทธ๋๋ฐ์ด์๋ค๋ ๊ฒ์ด์์ต๋๋ค. ํผ์์ ํ๋ ํ๋ก๊ทธ๋๋ฐ(PairProgramming์ ์๊ณ ๋๋ ์๋ก์ด ๊ฐ๋
์ด ์๊ธฐ๋๊ตฐ์. ์๋ Programming์ด๋ผ๋ ๊ฒ์ ํผ์ํ๋ ๊ฑฐ์๋๋ฐ, ์ด์ ํ๋ก๊ทธ๋๋ฐํ๋ฉด pair์ธ์ง single์ธ์ง ๊ตฌ๋ถ์ ํด์ฃผ์ด์ผ๊ฒ ๊ตฐ์)์ ํ๋ ๊ฒฝ์ฐ์๋ ํ์๋ค์ด ์๋์ค๋ฝ๊ฒ ๋ ๋ค๋ฉด ์ ์ง๊ธ ์ค๊ณํ๊ณ ์๊ตฌ๋ํ๊ณ ์๊ฐํ๊ณ , ์กฐ์ฉํด์ง๋ฉด ์ ์ง๊ธ ์ฝ๋ฉํ๊ณ ์๊ตฌ๋..ํ๋ ์๊ฐ์ด ๋ค์๋๋ฐ, PP๋ ๋๊น์ง ์๋๋ฝ๊ฒ ํ๋๊ฑฐ๋ผ๋ ๋๋์ด ๋ค๋๊ตฐ์. ๊ทธ๋ ๊ฒ ๋ํ๊ฐ ๋ง์์ง๋ ๊ฒ์ ์ฝ๋ฉ์ ๋ํ ์ดํด๋์ ์ฆ๊ฐ์ ์๋ก๊ฐ์ ํ๋ ฅ ๋ฑ ๋ง์ ์์นํจ๊ณผ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค๋ ์๊ฐ์ ํ์ต๋๋ค.
- ์๋
ํ์ธ์? ์ฐธ๊ด์์๋ ์ฌ๋์
๋๋ค. Feedback์ด ์ข ๋ฆ์๋ค์. ์๋ค๋ฅธ ๊ฒฝํ์ด์๋๊ฒ ํ์คํ๋๋ฐ, ๋ค๋ง ์๊ฐ์ด ํ์๊ฐ ์ ๋๋ง ๊ธธ์๋๋ผ๋ฉด, ํจ์ฌ๋ ๋ง์๊ฑด ๋๊ผ์๊ฒ ๊ฐ์์ ์์ฝ์ต๋๋ค. TDD๋ CRC์นด๋ ๋๋ค ์ ํ๊ธฐ์ ์ข ์งง์ ์๊ฐ์ด์๋๊ฒ ๊ฐ์ต๋๋ค. ์์ผ๋ก๋ ์ด๋ฐ๊ธฐํ๊ฐ ๋ง์์ผ๋ฉด ์ข๊ฒ ๋ค์. ๊ทธ๋ผ ์ด๋ง... --๊น์ ์ค