working effectively with legacy code errata - andstudy/forge GitHub Wiki
working effectively with legacy code errata
๋ฌผ๋ก ์ฌ๊ธฐ์ ์๋ ๋ฒ์ญ๋ ํ๋ฆด ์ ์์ต๋๋ค.
๊ฐ์ฌ์ ๊ธ
- ์ ์ผ์ด ๋งํด - 7
- '''์ํด ๋ฐฅ''', ๋ก๋ฒํธ ๋งํด
- ์ํด ๋ฐฅ์ ๋ก๋ฒํธ ๋งํด์ ๋ณ๋ช , ์ ์์ ์ผ์ด์ด ์๋
- ์ค์ํ์ง ์์ ์ฌ๋์ผ๋ก ๋ถํฐ ๋นํ์ ์ธ ๊ฒ์ ๋ถ๋ฆฌ์ํค๋ ์ผ - 7
- ์ค์ํ ๊ฒ๊ณผ ์ฌ์ํ ๊ฒ์ ๋ถ๋ฆฌํ๊ธฐ
์ ์ ์๋ฌธ
- ์. ์ง๊ธ ๋ ๊ฑฐ์ ์ฝ๋๋ฅผ ์์ฑํ๋ ์ค์ด์ผ - 9
- ์ปจ์คํ ํ๋ฌ ์์ ๋ณด๋๊น, ๋ค๋ค ๋ ๊ฑฐ์ ์ฝ๋๋ง ๋ง๋ค๊ณ ์์์์ด
- ์น๊ตฌ๊ฐ ๋ ๊ฑฐ์ ์ฝ๋๋ฅผ ์์ฑ ํ๋๊ฒ ์๋
- ๋ ๊ฑฐ์ ์ฝ๋์์๋ ๋ช๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ฉด ๋ค๋ค๋ฅด๊ฒ ๋๋ ๊ฒ์ด๋ค - 12
- ๋ ๊ฑฐ์ ์ฝ๋์์๋ ์ ํ ๋ณ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ์ข์ ๋์์ธ์ ๋ค๋ค๋ฅธ๋ค
- but in legacy code, it is something that we arrive at in discrete steps.
1์ฅ. ์ํํธ์จ์ด ๋ณ๊ฒฝ
- ๋ง์ฝ ๋ด๋น๋ถ์ ์ฌ๋๋ค์ด ๋ณ๊ฒฝํ๊ณ ์ถ๋ค๋ ์์ฌ๋ฅผ ์ฒ ํํ๋ค๋ฉด, ์ฐ๋ฆฌ๋ ๋ฒ์จ ์ด ์ผ์ ๋๋์ ๊ฒ์ด๋ค - 30
- ๊ทธ ์ฌ๋๋ค์ด ๋ง์์ ์๊พธ ๋ฐ๊ฟ๋จน์ง๋ง ์์์ด๋, ๋ฒ์จ ์ผ์ ๋๋์ ๊ฒ์ด๋ค
- ์ฆ์ ์๊ตฌ์ฌํญ ๋ณ๊ฒฝ์ผ๋ก ์ผ์ ์ด ๋ฆ์ด์ง๊ณ ์๋ค๋ ์๋ฏธ
- ์ฌ๋๋ค์ด ์์
ํ ๋๋ ์๋ก์ด ํน์ง์ ์ถ๊ฐํ๊ฑด, ํน์ ๋ฒ๊ทธ๋ฅผ ์์ ํ๊ฑด ๊ฐ์ ์ฐ๋ฆฌ๋ ๋์์์ด ๋ฐ๊ฟ ์ ์์ผ๋ ์ด๋ ๋จ์ง ์ฝ๋๋ ๋ค๋ฅธ ์ธ๊ณต๋ฌผ์ ๋ณํ์ํค๋ ๊ฒ์ ๊ตญํ๋๋ค - 30
- ์ฌ๋๋ค ๋ผ๋ฆฌ๋ ๊ธฐ๋ฅ์ถ๊ฐ๋ก ๋ถ๋ฅด๋ ์ค๋ฅ์์ ์ผ๋ก ๋ถ๋ฅด๋ ์ธ์ ๋ ๋ฐ๊ฟ ๋ถ๋ฅผ ์ ์์ง๋ง, ์ด๋ฐ ์์ ๋ค์ ์ฌ๋์ ๊ด๋ จ๋ ์์ ์ด ์๋๋ผ ์์ค์ฝ๋์ ์ฐ์ถ๋ฌผ์ ๋ณ๊ฒฝํ๋ ์์ ์ด๋ค
- At the people level, we can go back and forth endlessly about whether we are adding features or fixing bugs, but it is all just changing code and other artifacts
- ๋์์ ์ํํธ์จ์ด์ ์์ด์ ๊ฐ์ฅ ์ค์ํ ์์๋ก ์ฌ์ฉ์๋ ๋ฐ๋ก ์ด ๋์์ ๋ฐ๋ฅด๊ฒ ๋๋ค - 30
- ๋์์ ์ํํธ์จ์ด์ ์์ด์ ๊ฐ์ฅ ์ค์ํ ์์๋ก, ์ฌ์ฉ์๋ ๋ฐ๋ก ์ด ๋์์ ๋ฐ๋ฅด๊ฒ ๋๋ค
- ์ผํ ์ถ๊ฐ. ์๋ฌธ์ ๋ ๋ฌธ์ฅ์ธ๋ฐ ํ ๋ฌธ์ฅ์ผ๋ก ๋ง๋ค์์ผ๋, ์ผํ๋ฅผ ์ถ๊ฐํ์.
- ๋ฐ๋๋ก ๊ทธ๋ค์ด ์ฌ์ฉํ๊ณ ์๋ ๋์์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ญ์ ํ๋ฉด ๋ฒ๊ทธ๊ฐ ์๊ธธ ์๋ ์์ผ๋ฏ๋ก - 30
- ๋ฒ๊ทธ '''๋๋ฌธ์''' ์ ์ฐ๊ณ ์๋ ๋์์ด ๋ฐ๋๊ฑฐ๋ ์ฌ๋ผ์ง๋ค๋ฉด
- ์ฐ๋ฆฌ๊ฐ ๋ง์ผ ์ฝ๋(HTML๊ณผ ๊ฐ์ ์ฝ๋)๋ฅผ ์์ ํด์ผ ํ๋ค๋ฉด ๋์๊น์ง ๋ณ๊ฒฝ์ํฌ ์ ์๋ค - 31
- ์ฝ๋(HTML๋ ์ฝ๋๋ก '''์ทจ๊ธ'''ํ๋ค)๋ฅผ ์์ ํ๋ค๋ฉด ๋์๋ ๋ณ๊ฒฝ ๋๋ค๊ณ '''๋ณผ ์ ์๋ค'''
- ์ด๋ค ์กฐ๊ฑด์ ์๋ฐ ํ๋์ง๋ฅผ - 35
- ๋ญ๊ฐ '''๋ง๊ฐํธ๋ฆฌ์ง''' ์์๋์ง๋ฅผ
- ์๋ฐ์ด ์๋๋ฉด ๊ณ ์น์ง๋ ๋ง๋ผ - 35
- '''๊ณ ์ฅ'''๋์ง ์์์ผ๋ฉด ๊ณ ์น์ง ๋ง๋ผ
2์ฅ. ํจ๊ณผ์ ์ธ ํผ๋๋ฐฑ ํ์ฉ
- ๋๋ ์ด ์์ธ๋ค์ 'ํธ์งํ๊ณ ๊ธฐ๋ํ๊ธฐ' - 37
- ๋๋ ์ด '''๋ฐฉ๋ฒ๋ค์''' 'ํธ์งํ๊ณ ๊ธฐ๋ํ๊ธฐ'
- ๋ฎ๊ณ ์์ ํ๊ธฐ - 37
- ๊ฐ์ธ๊ณ ์์ ํ๊ธฐ
- cover - ๋ฎ๋ค, ๊ฐ์ธ๋ค, ๋ณดํธํ๋ค, ์ํธํ๋ค.
- ๊ฐ์ธ์ ๋ณดํธํ๋ค๋ ์๋ฏธ
- ๊ณํ์ ์ธ์ฐ๊ณ - 37
- ๊ณํ์ '''์ฃผ์๊น๊ฒ''' ์ธ์ฐ๊ณ
- ๊ณํ์ ๋ฐํ๋ ์ฌํญ์ด - 37
- ๋ญ๊ฐ ๋ง๊ฐํธ๋ฆฌ์ง ์์๋์ง
- ๊ฐ์ธ ์๊ฐ์ ํฌ์ํด์๋ผ๋ - 37
- '''์ถ๊ฐ''' ์๊ฐ์ ํฌ์ํด์๋ผ๋
- ์ฌ๋ฌ๋ถ์ด ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด๋ฉด ํ๋ฉด์ ์ผ๋ก ์ฌ๋ฌ๋ถ์ด ๋ฐ๋ผ๋ ๋ชฉ์ ์ง๋ก ์ธ๋ํด์ค ๊ฒ์ด๋ค - 37
- ๊ฐ์ฅ ์ค์ํ ํต์ฌ ๋ฐ๋ก ๊ทธ๊ณณ์ "์ฃผ์"๋ฅผ ๊ธฐ์ธ์ฌ์ผ ํ๋ค
- The "care" that you take is right there at the forefront
- ํ์ง๋ง ์ด๋ ๊ฒ ์ป๋ ํผ๋๋ฐฑ์ ํตํด ์ฐ๋ฆฌ๋ ์ข๋ ๊ผผ๊ผผํ - 38
- ๊ฐ์ ์์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด๋ฉด์๋, ํผ๋๋ฐฑ์ ํจ๊ป ํ์ฉํ๋ฉด, ์ฐ๋ฆฌ๋ ์ข๋ ๊ผผ๊ผผํ
- We still apply the same care, but with the feedback we get, we are able to make changes more carefully
- ๋ฌธ์ฅ ์ผ๋ถ๋ถ ๋ฒ์ญ ๋นผ๋จน์ - We still apply the same care,
- ํ
์คํธ ์์ฒด๊ฐ ์ข์ ๋ชฉ์ ์ผ ์๋ ์๊ณ - 38
- ๋ฌผ๋ก ๊ทธ๊ฒ๋ง์ผ๋ก๋ ํ๋ฅญํ ๋ชฉํ์ง๋ง,
- ๊ทธ๊ฒ์ ์ ๋ฌธ์ฅ์ ์๋ฏธ - "์ ํ์ฑ์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํ ํ ์คํธ"
- ์ ์ฉ ๋ฒ์ - 42
- ์ปค๋ฒ๋ฆฌ์ง(coverage)
- "์ ์ฉ ๋ฒ์"๋ ์๋ฏธ๊ฐ ์๋ฟ์ง ์๋๋ค. ์ ๋นํ ๋ฒ์ญ์ ๋ ์ค๋ฅด์ง ์์.
- ์ฐ๋ฆฌ๊ฐ ์ข๋ ์์ฃผ ํ
์คํธ ๋ฃจํด์ ๋๋ฆด ๊ฒฝ์ฐ ์ค๋ฅ ์ง์ญํ์ ๋น ์ง ์ฐ๋ ค๊ฐ ์๋ค๋ ๊ฒ์ด๋ค - 42
- ํ ์คํธ๋ฅผ ์์ฃผ ๋๋ ค์ผ๋ง ์ค๋ฅ๋ฅผ ์ง์ญํ ํ ์ ์๋๋ฐ,
- ์ค๋ฅ ์ง์ญํ๋ ์ข์๊ฒ์ด๋ค.
- ๋๊ท๋ชจ ํ ์คํธ๋ ์๊ฐ์ด ๋ง์ด ๋ค์ด ์์ฃผ ๋๋ฆด ์ ์์ด์ ์ข์ ํ๊ฒ ๋๋ค๋ ์๋ฏธ
- ํ
์คํธ ๋ฃจํด์๋ ์ฐ์๋๋ ๋ถ๋ถ์ด ์๊ฒ ๋ง๋ จ์ด๋ค - 42
- ๋ณดํต์, ์ฐ์์ฒด๊ฐ ์๊ธฐ ๋ง๋ จ์ด๋ค.
- Naturally, there is a continuum
- continuum - ๋ค๋ฅธ ์ฌ๋ฌ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฉ์น ํฐ ํด๋์ค๋ฅผ "์ฐ์์ฒด"๋ผ๊ณ ์ด๋ฆ ๋ถ์ธ ๋ฏ ํจ
- ์๊ฐ์ด 1/100๋ก ์ค์ด๋ ๋ค๋ฉด - 43
- ์๊ฐ์ด 1/100'''์ด'''๋ก ์ค์ด๋ ๋ค๋ฉด
- ํ
์คํธ ๋ฎ๊ฐ - 44
- ํ ์คํธ๋ก ๊ฐ์ธ๊ธฐ(Test Coverings)
- ์ด๊ฒ์ ์์ฑํ๋ ๊ฒ์ ๋งค์ฐ ์ฌ์ด ์ผ์ด๋ค - 45
- ์ด๊ฒ์ ์์ฑํ๋๊ฒ ์ฌ์ธ๊น?
- How easy will it be to create one of those?
- ์ฝ์ง ์๊ณ ์คํ๋ ค ์ด๋ ต๋ค๋ ์๋ฏธ
- ์ฐ๋ฆฌ๋ ์๋ธ๋ฆฟ์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์ง ์๋๋ก ์ฝ๋๋ฅผ ์์ ํ ์ ์๋ค - 45
- '''๊ฒฝ์ฐ์ ๋ฐ๋ผ''' ์๋ธ๋ฆฟ์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์ง ์๋๋ก ์ฝ๋๋ฅผ ์์ ํ ์'''๋''' ์๋ค
- ๋ท ๋ฌธ์ฅ์ ๋์ค๋ ์กฐ๊ฑด์ ๋ง์กฑํ ๊ฒฝ์ฐ์ ์์ ๊ฐ๋ฅ ํ๋ค๋ ์๋ฏธ
- ์ ์๋ฆฌ - 46
- ์ ์ ํ ์๋ฆฌ์
- in place - ์ ์ ํ ์๋ฆฌ์, ์ ์์
- ์นจ์ต์ฑ(์ค๋ฉฐ๋ค์ด ์ ๋ ์ฑ์ง) - 47
- ์นจ์ต์ ('''๊ณต๊ฒฉ์ ์ด๋ผ ํด๊ฐ๋๋''')
- ๋ ๋ณด์์ ์ด๋ผ๋ฉด ๊ทธ ๋ถ๋ถ์ ์ฆ์ ๊ณ ์น ๊ฒ์ด๋ค - 48
- ๋ ๋ณด์์ ์ด๋ผ๋ฉด ๊ทธ ๋ถ๋ถ์ ''' ๋ณ ์๊ฐ์์ด ๋ฐ๋ก''' ๊ณ ์น ๊ฒ์ด๋ค
- '''4์ค ์ญ์ '''
- ์ด๋ ๊ฒ ํ๋ฉด ๋ ์ด์ ์๋ธ๋ฆฟ์ ๋ฐ์ง ... ํ์ธํ๋ ค๋ฉด ์ ํํ ํ ์คํธ๊ฐ ํ์ํ๋ค.
- ์ด ๋ด์ฉ์ 45p ๊ทธ๋ฆผ ์๋ถ๋ถ์ ์๋ ๋ด์ฉ์ด๋ค. ๊ธ์๋ ์กฐ๊ธ ๋ค๋ฅด์ง๋ง ๋ด์ฉ์ ๊ฐ๋ค. ์ญ์ ํ์.
- ์ถ์ธกํ๋ฉด copy & paste ์ค์๋ก ์ด์ ํ์ด์ง ๋ด์ฉ์ด ์๋ฑํ ๊ณณ์ ํ์ด๋ฐํ ์๋ ๊ฒ์ด๋ค.
- c&p๋ ์ฝ๋ฉํ ๋๋ง ํฉ์๋ค.
- ํ์ง๋ง ์ด๊ฒ์ ๊ทธ ์ํ๋์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์๋ค - 47
- ๊ฐ๋ฅํ์ง๋ง, ์ํ๋๊ฐ ์ผ๋ง๋ ๋๋์ง ๋ฐ์ ธ๋ด์ผ ํ๋ค.
- We can do that, but it depends upon how much risk is involved
- ๋ฌธ์ฅ ์ผ๋ถ๋ถ ๋ฒ์ญ ๋นผ๋จน์ - We can do that,
- ์ค๋ฅ๊ฐ ํฐ ๋ฌธ์ ์ด๊ฑฐ๋ ์ผ์์ ์ด๋ผ๋ฉด ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์๋ง์ ๋์์ ํด์ผ ํ ๊ฒ์ด๋ค - 47
- ์ค๋ฅ๊ฐ ํฌ๊ฒ ๋ฌธ์ ๊ฐ ๋ ๋๋ฉด, ๋ณดํต์ ๊ฒฝ์ฐ ์ค๋ฅ๋ ํฐ ๋ฌธ์ ์ธ๋ฐ, ๊ทธ๋ด๋๋ ๋ณด์์ ์ผ๋ก ์ ์คํด์ ธ์ผ ํ๋ค.
- When errors are a big deal, and they usually are, it pays to be conservative.
- ๋ ๊ฑฐ์ ์ฝ๋์์ ํ๋ฃจํ๋ฃจ์ ๋ชฉํ๋ ๋ณ๊ฒฝ ์์ฒด๊ฐ ์๋๋ผ ๋ณ๊ฒฝ์ํค๋ ํ์์ด๋ค. ๊ฐ ํ๋ก๊ทธ๋๋ฐ ์ํผ์๋์ - 48
- ๋ ๊ฑฐ์ ์ฝ๋์์ ํ๋ฃจํ๋ฃจ์ ๋ชฉํ๋ ๋ณ๊ฒฝ์ด๋ค. ํ์ง๋ง, ๋ณ๊ฒฝ๋ง์ผ๋ก ๋๋์๋ ์๋๋ค. ์ฐ๋ฆฌ๋ ๊ธฐ๋ฅ์ ๋ณ๊ฒฝ์ ํจ์ผ๋ก์จ ์ ํ์ ๊ฐ์น๋ฅผ ์ถ๊ฐํ๋ ๋์์ ํ ์คํธ์ ๋ณดํธ๋ฐ๋ ๋ถ๋ถ์ด ๋ ๋ง์์ง๋๋ก ์์คํ ์ ๊ณ ์ณ์ผ ํ๋ค.
- The day-to-day goal in legacy code is to make changes, but not just any changes. We want to make functional changes that deliver value while bringing more of the system under test.
- ๋ฌธ์ฅ ํ๋๋ฅผ ์์ ํ ๋นผ๋จน์.
- ์ด์ํ ๋ถ๋ถ์ด ๋ฐ๊ฒฌ๋๋ฉด ์๋ฌธ์ ์ฐธ๊ณ ํ๋ฉด ๋์ง๋ง, ๋ฌธ์ฅ์ ์์ ๋นผ๋จน๋๊ฑด ๋ต์ด ์๋ค.
- ํน ๊ทธ๋ฐ ๊ธฐ๋ฒ๋ค์ ์ฌ์ฉํ๊ธธ ์ํ๋ค๋ฉด ๊ด๋ จ ์์ ์ ์ฐธ๊ณ ํ๊ธธ ๋ฐ๋๋ค - 50
- ๊ทธ๋ฐ ๊ธฐ๋ฒ๋ค์ ์ฌ์ฉํ ๊ธฐํ๊ฐ ์ค๋ฉด, ๋ฐ๋์ ์ ์ฉํด ๋ณด๊ธธ '''์ ๊ทน ์ถ์ฒ'''ํ๋ค
- ์ค๊ณ๋ฅผ ์ด๋ป๊ฒ ํ๋ฉด ์ ํ๋์ง๋ฅผ ๋ณด์ฌ์ค ๊ฒ์ด๋ค - 50
- ์ด๋ป๊ฒ ํ๋ฉด '''๋ ๋์ ์ค๊ณ๋ก ๊ฐ์ ํ๋์ง''' ๋ณด์ฌ์ค ๊ฒ์ด๋ค
- ์ด๋์ ์ ์ด๋ค์ง ์ค๊ณ๋ ๋ฌธ๋งฅ ์ข
์์ ์ด๊ณ ์ข
์ข
์ด์ ์ค๊ณ๋ณด๋ค ๋ช ๊ฐ์ ๊ด๋ฆฌ ๊ฐ๋ฅํ ๋จ๊ณ๋ฅผ ๋ ๊ฐ์ง๊ฒ ๋๋ค - 50
- "๋ ๋์"์ด๋ ์๋ฏธ๋ ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅธ๋ฐ ์ด์ ์ค๊ณ๋ณด๋ค ์ด์ ๊ฐ์ ํ๊ธฐ๊ฐ ๋ช ๋จ๊ณ ์ ๋ ์ฌ์์ก๋ค๋ ๊ฒ์ ์๋ฏธํ ๋๊ฐ ๋ง๋ค.
- where "better" is context dependent and often simply a few steps more maintainable than the design was before.
3์ฅ. ๊ฐ์ง์ ๋ถ๋ฆฌ
- ๊ฐ์ง: ์ธ์ ์ฝ๋๊ฐ ๊ณ์ฐํ๋ ๊ฐ๋ค์ ์ ๊ทผํ ์ ์๋์ง๋ฅผ ๊ฐ์งํ๊ธฐ ์ํด ์์กด๊ด๊ณ๋ฅผ ์ ๊ฑฐํ๋ค - 52
- ํ์ง ํ๋ณด - ์ฝ๋๊ฐ ๋ณ๊ฒฝํ๋ ๊ฐ์ ์ ๊ทผ ํ์ง ๋ชปํ ๋, ํ์งํ๊ธฐ ์ํด ์์กด๊ด๊ณ๋ฅผ ๊นจํธ๋ฆฐ๋ค
- Sensing - We break dependencies to sense when we can't access values our code computes
- Sensing ๊ณผ sense ๊ตฌ๋ณํ๋๊ฒ ์ข์ง ์์๊น?
- ๋ถ๋ฆฌ: ์ธ์ ์ฝ๋๋ฅผ ํ
์คํธ ํ๋์ค์ ๋ฃ์ด ์คํํ ์ ์๊ฒ ๋๋์ง๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด ์์กด๊ด๊ณ๋ฅผ ์ ๊ฑฐํ๋ค - 52
- ๋ถ๋ฆฌ ํ๋ณด - ํ ์คํธ ํ๋์ค์ ๋ฃ์ด ์คํํ ์ฝ๋ ์กฐ๊ฐ์ ์ป์ง ๋ชปํ ๋, ๋ถ๋ฆฌํ๊ธฐ ์ํด ์์กด๊ด๊ณ๋ฅผ ๊นจํธ๋ฆฐ๋ค
- Separation - We break dependencies to separate when we can't even get a piece of code into a test harness to run
- ํ์ง๋ง ํ
์คํธํ ๋๋ sale ํด๋์ค๊ฐ ๊ฐ์ฒด๋ฅผ FakeDisplay๋ก ์ฌ๊ฒจ์ผ ํ๋ค - 58
- ํ์ง๋ง ํ ์คํธ ์ฝ๋์์๋ FakeDisplay ๊ฐ์ฒด๋ก ์ทจ๊ธํด์ผ ํ๋ค
4์ฅ. ๋ดํฉ ๋ชจ๋ธ
- ๋ดํฉ
- ์ด์๋งค(seam)
- ์ด๋ํ(jeddli)(http://jeddli.tistory.com/)๋์ด ์ ์ ํ ๋จ์ด๋ฅผ ๊ณจ๋ผ ์ฃผ์ จ์ต๋๋ค.
- ๋ดํฉ : ๋ดํฉ(seams)์ ํ๋ก๊ทธ๋จ ์์์ ๋์์ ๋ณํ์ํฌ ์ ์๋ ์์น๋ฅผ ๋งํ๋ค. ์ด๋ ๋์์ ๋ณํ์ํค๊ธฐ ์ํด ์ฝ๋๋ฅผ ํธ์งํ ํ์๋ ์๋ค. - 64
- ์ด์๋งค(seams)๋ ๊ทธ ์์น์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝ์ํค์ง ์์ผ๋ฉด์ ํ๋ก๊ทธ๋จ์ ๋์์ ๋ณํ์ํค๋ ์์น๋ฅผ ๋งํ๋ค.
- ์, ๊ทธ๋ฌ๋ฉด CAsyncSSlRec ํด๋์ค๋ฅผ ํ์ํด๋์คํ๊ณ PostReceive ๋ฉ์๋์ ๋ฎ์ด์ฐ๋ฉด ์ด๋จ๊น? - 64
- ์, ๊ทธ๋ฌ๋ฉด CAsyncSSlRec ํด๋์ค๋ฅผ ํ์ํด๋์คํ๊ณ PostReceive ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋(override)ํ๋ฉด ์ด๋จ๊น?
- override๋ฅผ ๋ฎ์ด์ด๋ค๊ณ ๋ฒ์ญํ๊ธฐ ๋ณด๋ค ์์ด ์ฉ์ด๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋๊ฒ ์ดํด๊ฐ ๋ ์ฝ๋ค.
- ๋ถ๋ช
ํํ ๋ฒ๊ทธ๋ฅผ ์จ๊ธฐ๊ธฐ ์ํ ๋งคํฌ๋ก๋ฅผ ๋ง๋ค๊ธฐ๋ ํ๋๋ฐ ์ด๋ฐ ์ผ์ ์ฌ์ด์ผ์ ์ํ๋ค - 68
- ๋งคํฌ๋ก๋ฅผ ์์ฑํ ๋ ์์ฒญ๋๊ฒ '''์ฐพ๊ธฐ ์ด๋ ค์ด''' ๋ฒ๊ทธ๋ฅผ ๋ง๋ค๊ธฐ ์ฝ๋ค
- ์ฐธ์กฐ๋ฅผ ๋ถํดํ ๋ ์ด๋ค ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๊ฐ์ - 71
- ์ฌ์ฉ์ค์ธ ์ธ์ด๊ฐ ์ฐธ์กฐ๋ฅผ '''ํด์'''ํ๋๋ฐ ์ด๋ค ๋ฐฉ์์ ์ฌ์ฉํ๋ ๊ฐ์
- ์ ์ฒ๋ฆฌ ๋ดํฉ๊ณผ ์ฐ๊ฒฐ ๋ดํฉ์ ์์กด๊ด๊ณ์ ์นจ์ต์ฑ์ ๊ฐ์ง๊ณ ์๋ค. ๋ฐ๋ผ์ ๋์์ด ์๋ ๊ฒฝ์ฐ๋ฅผ ๊ฐ์ํด ์ด๋ฅผ ๋จ๊ฒจ ๋์ ๊ฒ์ด๋ค - 81
- ์ ์ฒ๋ฆฌ ์ด์๋งค์ ์ฐ๊ฒฐ ์ด์๋งค๋ ์ผ๋จ ์ฌ์ฉ์ ๋ฏธ๋ค๋๊ณ , ์์กด๊ด๊ณ๊ฐ '''๋๋ฆฌ ํผ์ ธ''' ๋ ๋์ ๋์์ด ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค
5์ฅ. ๋ ๊ฑฐ์ ์ฝ๋๋ฅผ ์ํ ๋๊ตฌ
- ์ด๋ฐ ์ข
๋ฅ์ ์์
์ ์ข ๋ ์ ํํ๋ ํตํฉ ํ
์คํธ๋ฅผ ์ํ ํ๋ ์์ํฌ์ ์ ํฉ์ฑ ์์ญ์ด๋ค - 93
- ์ด๋ฐ ์ข ๋ฅ์ ์์ ์ '''FIT์ Fitness์ ์์ญ'''์ด๋ผ ๋ณด๋๊ฒ ๋ ์ ์ ํ๋ค
6์ฅ. ๊ณ ์น ๊ฑด ๋ง๊ณ ์๊ฐ์ ์๊ณ
- ๋ ์ง๋ฅผ ๊ฒ์ํ๊ณ ์๋ก์ด ํญ๋ชฉ์ ์ถ๊ฐํ๊ธฐ ์ ์๋ ๊ทธ ์ ํญ๋ชฉ์ด - 100
- ๋ ์ง๋ฅผ ๊ฒ์ํ๊ณ ์๋ก์ด ํญ๋ชฉ์ ์ถ๊ฐํ๊ธฐ ์ ์ ๊ทธ ์ ํญ๋ชฉ์ด ('๋' ์ญ์ )
- ์นจํฌ์ฑ - 101, 109
- ์นจ์ต์
- ์ฌ๊ธฐ์๋ ์ง๋ถ์ ๊ธฐ๋กํ ํ์๊ฐ ์๋ ํ ๋ถ๋ถ์ LogPayDispatcher ํด๋์ค๋ฅผ ์์ฑํ๋ค - 118
- ์ด์ ์ง๋ถ์ ๊ธฐ๋กํด์ผํ ๊ณณ์์ LogPayDispatcher ํด๋์ค๋ฅผ '''์์ฑํ ์ ์๋ค'''
7์ฅ. ์ฝ๋ ํ๋ ๋ฐ๊พธ๋ ๋ฐ ์ ์ด๋ฆฌ ์ค๋ ๊ฑธ๋ฆฌ์ง?
- ๊ทธ๋ฆผ์๋ ๋ํ๋ ์์ง ์์ง๋ง ๊ทธ ๋ ํด๋์ค๊ฐ ์๋ก ์ข
์๋์ด ์๋ ๊ฒฝ์ฐ๋ผ๋ฉด ๋ ์ข๋ค๊ณ ํ ์ ์๋ค - 126
- ๋ ํด๋์ค ๋ชจ๋ ๊ทธ๋ฆผ์ ๋์ค์ง ์์ '''๋ ๋ค๋ฅธ ํด๋์ค๋ค์ ์์กด'''ํ๊ณ ์์ ๊ฐ๋ฅ์ฑ์ด ํฌ๋ค
- ๋ค์์ ConsultantSchedulerDBImpl, AddOpportunityFormHandler๋ฅผ ์์ ํ ๋๋ ์ฌ์ปดํ์ผํ ํ์๊ฐ ์๋ค - 127
- ์ด์ ConsultantSchedulerDBImpl๋ฅผ ์์ ํด๋, AddOpportunityFormHandler๋ ์ฌ์ปดํ์ผํ ํ์๊ฐ ์๋ค
8์ฅ. ํน์ง, ์ด๋ป๊ฒ ์ถ๊ฐํ ๊น?
- ๋น๊ต๋ฅผ ํตํ ํ๋ก๊ทธ๋๋ฐ - 140, 148, 151
- ์ฐจ์ด์ ์ํ ํ๋ก๊ทธ๋๋ฐ(Programming by Difference)
- ์์กด๊ด๊ณ - 140, 149 ๋ฑ
- '''์์'''
- ํ์ง๋ง ์์กด๊ด๊ณ๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ ์์ฒด๊ฐ ๋ฐ๋์ ์ ์๋ฆฌ ์์กด๊ด๊ณ๋ฅผ ์ ์งํด์ผ ํ๋ค๋ ๋ป์ ์๋๋ค - 140
- ํ์ง๋ง ์์์ ์ฌ์ฉํ์๋, ์ ๋๋ก ์ฌ๋ฐ๋ฅด๊ฒ ์์์ ์ฌ์ฉํ๋ค๊ณ ์ฅ๋ด ํ ์ ์๋ค.
- But just because we use inheritance initially doesn't mean that we have to keep it in place.
- ์ด ๋ฌธ์ฅ์ ์ฃผ์ด๋ ๊ณผ์ฐ ๋ฌด์์ผ๊น? ์ด ๋ฌธ์ฅ์ ๊ณผ์ฐ ๊น๋ํ ์์ด ๋ฌธ์ฅ์ผ๊น? ๋ฏธ๊ตญ์ ๋ค์ด ๋ณผ๋ ๋ฌธ์ฅ๊ตฌ์กฐ๋ ์๋ฏธ๊ฐ ๋ช ํํ ๊น?
- ์ค๋ฒ๋ผ์ด๋ฉํ๋ ๋ฉ์๋ ์์ ์๋ ํ์ฌ ์ค๋ฒ๋ผ์ด๋ฉํ๋ ค๋ ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์๋์ง ํ์ธํ๋ค - 150
- ์ค๋ฒ๋ผ์ด๋ฉ ๋ฉ์๋์์ ์ค๋ฒ๋ผ์ด๋ ๋๋ ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์๋์ง ํ์ธํ๋ค
- ๊ฐ๋์ฉ ์ผ์ด๋๋ ์ถ์์ ์ธ ์ค๋ฒ๋ผ์ด๋๋ - 151
- ๊ฐ๋์ฉ ์ผ์ด๋๋ '''๊ตฌ์ฒด(concrete)''' ์ค๋ฒ๋ผ์ด๋๋
9์ฅ. ๋๋ฑ! ํ ์คํธ ํ๋์ค์ ํด๋์ค ์ ๋๋ก ๋ฃ๊ธฐ
- ์ฝ๋๋ฅผ ๋ณํ์ํค๋ ์ผ์ ์ฐธ ์ด๋ ค์ด ์ผ์ด์ง๋ง ๋ฉ์ง ์์
์ด๊ธฐ๋ ํ๋ค - 153
- ์ด๋ ์ ๋ง ์ด๋ ต๋ค
- This is the hard one
- 9์ฅ ์ ๋ชฉ์ ์์ ์ด ์ด๋ ต๋ค๋ ์๋ฏธ (ํ ์คํธ ํ๋์ค์ ์๋์ ํด๋์ค๋ฅผ ๋ชป ์ง์ด๋ฃ๊ฒ ์ด์!)
- ํ
์คํธ ํ๋์ค์์ ํด๋์ค์ ๊ตฌ์ฒด์ ์๋ฅผ ๋๋ ๊ฒ์ ์ฌ์ด ์ผ์ด์ง๋ง, ๋ถํํ๊ฒ๋ ์์ ์ด ์ฑ
์ ํตํด ์ ์ํ๊ธฐ๋ ๊ฒฐ์ฝ ์ฌ์ด ์ผ์ด ์๋๋ค - 153
- ํ ์คํธ ํ๋์ค์์ ํด๋์ค์ '''์ธ์คํด์ค'''๋ฅผ ๋ง๋ค๊ธฐ๊ฐ '''์ฝ๋ค๋ฉด''', ์ด ์ฑ ์ ๋ฌด์ฒ '''์์์ก์''' ๊ฒ์ด๋ค
- ํ
์คํธ ํ๋์ค๋ ๊ทธ ์์ ํด๋์ค์ ํจ๊ป ์ฝ๊ฒ ๋ง๋ค์ด์ง์ง ์๋๋ค - 153
- ์ฌ๋ฌ ํด๋์ค๋ค์ ์ฎ์ด ํ ์คํธ ํ๋์ค๋ฅผ ๋ง๋ค๊ธฐ๋ ์ฝ์ง ์๋ค
- The test harness won't easily build with the class in it
- ๊ตฌ์กฐ - 153, ...
- ์์ฑ์(constructor)
- ๊ทธ๋ฆฌ๊ณ ์ ์๋ฆฌ ํ
์คํธ ์์ ๋ ํ์๊ฐ ์๊ฒ ๋ค - 153
- ๊ทธ๋ฆฌ๊ณ ๋น์ฐํ ํ ์คํธ ํ๋์ค ์์ ์ง์ด ๋ฃ์ด์ผ์ง
- ์์ด, ์ด๊ฒ์ ์ด ํด๋์ค ์์ ์๋ ๊ฐ์ฅ ๋จ์ํ ์์ฑ์๋ก 3๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ๋ ๊ฒ ๊ฐ์๋ฐ, ์์ฑํ๊ธฐ๋ ์ด๋ ต์ง ์๊ฒ ๋ค - 154
- ์ธ์์, ์ ์ผ ๋จ์ํ ์์ฑ์๋ ํ๋ผ๋ฏธํฐ๊ฐ 3๊ฐ๋ ๋๋ค. ํ์ง๋ง, ์์ฑํ๊ธฐ๊ฐ ๊ทธ๋ ๊ฒ ์ด๋ ต์ง๋ ์์๊ฑฐ์ผ
- ๋จ์ง ๋ฐฉ์ด์ ์ธ ๊ฒ์ด์๋์ง - 154
- ๋จ์ํ '''๋ฐฉ์ด ์ฌ๋ฆฌ'''์๋์ง
- ํด๋ผ์ด์ธํธ๊ฐ ์ ํจํ ์ ์ฉ์ ๊ฐ๊ณ ์๋์ง - 154
- '''๊ณ ๊ฐ'''์ ์ ์ฉ์ด ์ ํจํ์ง
- ํด๋ผ์ด์ธํธ๋ค์ด ์ผ๋ง๋ ๋ง์ ์ ์ฉ์ ๊ฐ๊ณ ์๋์ง๋ฅผ - 154
- '''๊ณ ๊ฐ'''์ด '''์ด๋ ์ ๋'''์ ์ ์ฉ์ ๊ฐ๊ณ ์๋์ง
- ์ฐ๋ฆฌ๋ ์ ๊ทธ๊ฒ์ด ์ต์์ด๊ณ ์ฌ์ด์ง(ํน์ ์ด๋ ค์ด์ง)๋ฅผ ์์๋ด๊ธฐ ์ํด ์ ์ฐจ๋ก ๋ถ์ํ๋ค. ํ์ง๋ง, - 154
- ์์ฑํ๊ธฐ ์ฌ์ด์ง ์ด๋ ค์ด์ง ์์๋ด๊ธฐ์ํด ์์ฒญ๋๊ฒ ๋ถ์ํด๋ ๋๊ธด ํ์ง๋ง,
- ๋ถ์ํ์ง ๋ง๊ณ ๊ทธ๋ฅ ์ฝ๋ฉํด์ ์ปดํ์ผ ์๋ฌ๊ฐ ๋๋์ง ๋ณด๋ผ๋ ์๋ฏธ
- ๊ตฌ์กฐ - 154, ...
- ์์ฑ(construction)
- ๋ฐ๋ผ์ ์ด ํ
์คํธ ํ๋์ค์์ ์ด ํด๋์ค๋ฅผ ํ๋ํ๋ ๊ฒ์ ๋ค์ ์ฌ์ ๋ณด์ด๋๋ฐ ์ ๋ง ๊ทธ๋ฌํ ๊น? - 156
- ๊ทธ๋์, ํ ์คํธ ํ๋์ค์ ์ด ํด๋์ค๋ฅผ '''์์ฑ'''ํ๊ธฐ๋ ์ฌ์๋ณด์ธ๋ค. ๊ทธ๋ ์ง ์๋?
- ์ค์ ๋ก ๊ทธ๋ฆฌ ๋น ๋ฅด์ง๋ ์๋ค - 156
- ๋๋ฌด ์๋๋ฅด์ง ๋ง๋ผ
- ์๋ฒ์ RGHConnections๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ์ ์ข์ ์๊ฐ์ด - 156
- ์๋ฒ์ RGHConnections '''์ฐ๊ฒฐ ์ ์'''์ ํ๋ ๊ฒ์ ์ข์ ์๊ฐ์ด
- ๋ฐฉ๋ฒ - 156, ...
- ๋ฉ์๋(method)
- ๊ทธ๊ฒ์ RGHConnections์ด ์ฐ๊ฒฐ์ ~~~ ์งํฉ์ฒ๋ผ ๋ณด์ธ๋ค - 157
- ์ฌ๊ธฐ์ RGHConnection์, RFDIReportFor๋ ACTIOReportFor ๋ฑ ๋น์ฆ๋์ค ์ค์ฌ ๋ฉ์๋๋ฟ๋ง ์๋๋ผ connect, disconnect, retry ๋ฉ์๋ ๋ฑ ์ฐ๊ฒฐ์ ๊ตฌ์ฑํ๋ ๊ธฐ์ ์ ๋ค๋ฃจ๋ ๋ฉ์๋๋ค์ ์งํฉ์ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ธ๋ค
- ์์ด์ฝ ๊ณต์ ์ ์คํ ์ฐธ์กฐ
- ๋ง๋ฌ - 157
- ๋ง๋ฆ
- ๊ณ ์ฝํ๊ฒ๋ ๊ทธ๊ฒ๋ค์ด ์ํ ๋๋ง๋ค ๋๊ตฌ๋ ์ค์ ํ ์ ์๋ ๊ณต๊ฐ๋ ๋ณ์๊ฐ ์กด์ฌํ๋ค - 158
- ๋ ๊ณ ์ฝํ ์ฌ์ค์, ๋ณ์๊ฐ public์ด๋ผ ์๋ฌด๋ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค๋ ์ ์ด๋ค
- ๊ท์น์ ํด๋์ค์ ๋ฌ๋ผ ํ
์คํธ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ค - 158
- ํด๋์ค๋ฅผ ํ ์คํธ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค๋ ์ ์ฉํ๋ ๊ท์น์ ๊ธฐ์กด์ ์ฝ๋ฉ ๊ท์น๊ณผ ๋ค๋ฅด๋ค
- ์ ์ ์ฝ๋ - 158, ...
- '''์ ํ''' ์ฝ๋(production code)
- (๋ฌธ์ฅ๋๋ฝ)
- ์ฑ ์ ๋ฎ์ด๋ฒ๋ฆฌ์ง ์์ผ์ จ๊ฒ ์ฃ ?
- Are you still there?
- ๊ทธ๋ ๋ค๋ฉด ์์คํ
์์์๋ ํญ์ ๊ทธ ์์
์ด ์ํ๋๊ฒ ๊ตฐ - 159
- ์ฐ๋ฆฌ๊ฐ ๋งจ๋ ํ๋ ์ง์ด๊ตฐ
- ๊ธฐ์กด ์์คํ ์ด ์๋ง์ด๋ผ ํ๋ผ๋ฏธํฐ์ null์ ๋๊ธฐ๋ ์ง์ ์์ฃผ ํ๋ค๋ ์๋ฏธ
- ์ค์ ๋ก ํ๋์ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ ๋์์ด ํ์ํ๋ค๋ฉด, ๋น์ ์ ๊ทธ ์ง์ ์์ ๊ฐ์ฒด ํ๋๋ฅผ ์์ฑํ ํ - 160
- ๋์ํ๋๋ฐ ์ ๋ง๋ก ๊ฐ์ฒด๊ฐ ํ์ํ๋ค๋ฉด, '''๊ทธ๋ ๊ฐ์''' ๊ฐ์ฒด๋ฅผ ํ๋ ์์ฑํ ํ
- ์ ํํ ์ ์๋ค๋ฉด ์ ์ ์ฝ๋์์๋ - 160
- ๋ค๋ฅธ ์ ํ์ ์ฌ์ง๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด ์ ํ ์ฝ๋์์๋
- ์ด๋ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๊ทธ๋ ๊ฒ ํ๋๋ก ๊ธฐ๋ํ์ง๋ง, ์ฐจ๋ผ๋ฆฌ ์๋ก์ด ์ฝ๋๋ฅผ ์์
ํ๋ ๊ฒ์ด ๋ ํจ๊ณผ์ ์ด๋ค - 160
- null ๊ฐ์ ๋๊ฒจ์ผํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋ค๋ ์ฌ์ค์ ์๊ณ ์์ง๋ง, ์๋ก์ด ์ฝ๋๋ฅผ ์์ฑํ ๋๋ฉด '''๋ ๋์ ๋์'''์ ์ฐพ์์ผ ํ๋ค
- ์ ์กฑ ์ฝ๋์์ ๋์ ์ฌ์ฉํ๋ ค ํ๋ค๋ฉด ๋์ด ๋๋์์ค๊ณ ๋์ ์ ๋ฌ์ํฌ ๊ณณ์ ์ฐพ๊ณ , ๋ค๋ฅธ ํ๋กํ ์ฝ์ ๊ณ ๋ คํ์ - 160
- ์ ํ์ฝ๋์์ ๋์ ์ฌ์ฉํ๊ณ ์ ํ๋ ์ ํน์ด ๋๊ปด์ง๋ค๋ฉด, ๋์ ๋ฆฌํดํ๊ฑฐ๋ ์ ๋ฌํ๋ ๊ณณ์ ์ฐพ์ ๋ค์, ๋ค๋ฅธ ๋ฐฉ์(protocol)์ ์ฌ์ฉ์ ๊ณ ๋ คํด๋ณด์
- ์ ์ฝ๋๋ ํด๋์ค์ ์์ฑ์ ์ฝ๋ ์ค ์ผ๋ถ๋ถ์ด๋ค - 162
- ์ด์ ํด๋์ค ์์ฑ์์ ์ผ๋ถ๋ฅผ ์ดํด๋ณด์
- ์ปค์๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉํ ์ฝ๋๋ ๋ชจ๋ ํด๋์ค ์ธ๋ถ๋ก ์ฎ๊ธธ ์ ์๋ค - 166
- ์ปค์๋ฅผ ๋ง๋๋๋ฐ ์ฌ์ฉํ ์ฝ๋๋ฅผ ๋ชจ๋ ํด๋์ค ๋ฐ์ผ๋ก ์ฎ๊ธฐ๋ ค '''์๋ํด ๋ณผ ์๋''' ์๋ค
- ๊ทธ๋ฌ๋ ํ
์คํ ๊ณณ์ด ์๋ค๋ฉด ์ด๋ ์์ ํ์ง ๋ชปํ๊ณ , - 166
- ๊ทธ๋ฌ๋ '''์ ์ ํ(in place) ํ ์คํธ'''๊ฐ ์๋ค๋ฉด, ์ด๋ ์์ ํ์ง ๋ชปํ๊ณ
- ํ๊ธฐ - 167, ...
- ๊ฐ์์น์(supersede)
- ์ ์ ์ฝ๋์์ ํ๊ธฐ ๋ฐฉ๋ฒ์ - 167
- '''์ ํ ์ฝ๋'''์์ '''๊ฐ์์น์ ๋ฉ์๋'''๋
- ๋ค๋ฅธ ์์์ ๊ด๋ฆฌํ๋ ๊ฒ์ ํ๊ธฐํ๋ ๊ฐ์ฒด๊ฐ ์๋ค๋ฉด ์ด๋ ์ฌ๊ฐํ ์์ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์๋ค - 167
- ์ฐ๋ฆฌ๊ฐ '''๊ฐ์์น์ด''' ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๋ฆฌ์์ค๋ค์ ๊ด๋ฆฌํ๋ค๋ฉด, ์ฌ๊ฐํ ๋ฆฌ์์ค ๋ฌธ์ ๊ฐ ์๊ธธ์ง๋ ๋ชจ๋ฅธ๋ค
- ์ฐ๋ฆฌ๋ ๋๋ ํ์๊ฐ ์๊ธฐ์, - 168
- ์ฐ๋ฆฌ๋ '''ํ์ง(sense)'''ํด์ผ ํ๊ธฐ ๋๋ฌธ์,
์งํ์ค
- ์๋ฐค์พ ! 9์ฅ ๋ฒ์ญ ๊ฐํ
10์ฅ. ํ ์คํธ ํ๋์ค์์ ์คํํ ์ ์๋ ๋ฉ์๋
- ์งํ์ค
11์ฅ. ์ฝ๋ ๋ณ๊ฒฝ ๊ณผ์ ์์ ๊ผญ ํ ์คํธํด์ผ ํ ๋ฉ์๋
- ์งํ์ค
12์ฅ. ํด๋์ค ์์กด๊ด๊ณ, ๋ฐ๋์ ์์ ์ผ ํ ๊น?
- ์๋ฐค์พ ! 12์ฅ ๋ฒ์ญ ๊ฐํ
13์ฅ. ๋ณ๊ฒฝ์ ํ์ํ ํ ์คํธ๋ ๋ญ๊ฐ ์์๊น?
- ์งํ์ค
14์ฅ. ์ฐ๋ฆด ๋ฏธ์น๊ฒ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์กด๊ด๊ณ
- ์ข์ ์ฝ๋๋ ์ ์์ด๋ ํ
์คํธ ํ๊ฒฝ ๋ด์์ ์ํ๋๋ค๋ - 260
- ์ข์ ์ฝ๋๋ ์ ์ ํ๊ฒฝ๊ณผ ํ ์คํธ ํ๊ฒฝ '''์์ชฝ ๋ชจ๋์์''' ์คํ๋๋ค๋
15์ฅ. ์์ฉํ๋ก๊ทธ๋จ์ด ๋ชจ๋ API ํธ์ถ๋ก ์ด๋ค์ก๋ค๋ฉด?
- ์งํ์ค
์ฐธ๊ณ
acorn ์ถํ์ฌ๊ฐ ๊ด๋ฆฌํ๊ณ ์๋ ๋ ๊ฑฐ์ ์ฝ๋ ํ์ฉ ์ ๋ต/์ ์คํ