๐ค Chapter 2: ์ค์ฉ์ฃผ์ ์ ๊ทผ๋ฒ
๐ญ Topic 8. ์ข์ ์ค๊ณ์ ํต์ฌโ
Tip 14. ์ข์ ์ค๊ณ๋ ๋์ ์ค๊ณ๋ณด๋ค ๋ฐ๊พธ๊ธฐ ์ฝ๋ค.
์ด๋ค ๊ฒ ์ ์ค๊ณ๋์๋ค๋ ๊ฑด ๊ทธ ๋ฌผ๊ฑด์ด ์ฌ์ฉํ๋ ์ฌ๋์๊ฒ ์ ์ํ์ฌ ๋ง์ถฐ์ง๋ค๋ ๊ฒ์ด๋ค. ์ด ๋ง์ ์ฝ๋์ ์ ์ฉํด ๋ณด๋ฉด, ์ ์ค๊ณ๋ ์ฝ๋๋ ๋ฐ๋์ผ๋ก์จ ์ฌ์ฉํ๋ ์ฌ๋์๊ฒ ๋ง์ถฐ์ ์ผ ํ๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ ETC ์์น์ ๋ฐ๋ฅธ๋ค. ๋ฐ๊พธ๊ธฐ ๋ ์ฝ๊ฒ(Easier to Change, ETC). ์ด๊ฒ ์ ๋ถ๋ค.
์ฐ๋ฆฌ๊ฐ ์๋ ํ ์ธ์์ ๋ชจ๋ ์ค๊ณ ์์น์ ETC์ ํน์ํ ๊ฒฝ์ฐ๋ค.
์ ๊ฒฐํฉ๋๋ฅผ ์ค์ด๋ฉด ์ข์๊ฐ? ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํจ์ผ๋ก์จ ๊ฐ๊ฐ์ด ๋ ๋ฐ๊พธ๊ธฐ ์ฌ์์ง๊ธฐ ๋๋ฌธ์ด๋ค. ETC.
์ ๋จ์ผ ์ฑ
์ ์์น์ด ์ ์ฉํ๊ฐ? ์๊ตฌ ์ฌํญ์ด ๋ฐ๋๋๋ผ๋ ๋ชจ๋ ํ๋๋ง ๋ฐ๊ฟ์ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ETC.
์ ์ด๋ฆ ์ง๊ธฐ๊ฐ ์ค์ํ๊ฐ? ์ด๋ฆ์ด ์ข์ผ๋ฉด ์ฝ๋๊ฐ ์ฝ๊ธฐ ์ฌ์์ง๊ณ , ์ฝ๋๋ฅผ ๋ฐ๊พธ๋ ค๋ฉด ์ฝ๋๋ฅผ ์ฝ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ETC!
๐ฅ ETC๋ ๊ท์น์ด ์๋๋ผ ๊ฐ์นโ
๊ฐ์น๋ ์ฌ๋ฌ๋ถ์ด ๊ฒฐ์ ์ ๋ด๋ฆฌ๊ฒ ๋์์ ์ฃผ๋ ๊ฒ์ด๋ค. ์ํํธ์จ์ด๋ผ๋ ํ์์ ์๊ฐํด ๋ณด๋ฉด ETC๋ ์ ํ์ ๊ฐ๋ฆผ๊ธธ์์ ๋์์ ์ฃผ๋ ์๋ด์๋ค.
ETC์๋ ์๋ฌต์ ์ธ ์ ์ ๊ฐ ์๋ค. ๋ฐ๋ก ์ฌ๋ฌ ๊ธธ ์ค ์ด๋ค ๊ธธ์ด ๋ฏธ๋์ ๋ณ๊ฒฝ์ ์ฝ๊ฒ ๋ง๋๋์ง ์ ์ ์๋ค๋ ๊ฒ์ด๋ค. ์์์ด ๋๊ฐ ํตํ ํ ๊ณ , ์ฌ๋ฌ๋ถ์ ์ง์์ ๋ฐํ์ผ๋ก ์ถ์ธกํ ์ ์์ ๊ฒ์ด๋ค. ํ์ง๋ง ๊ฐ๋์ ์๋ฌด ์ค๋ง๋ฆฌ๊ฐ ์์ ์๋ ์๋ค. ๊ทธ๋๋ ๊ด์ฐฎ๋ค. ์ด๋ฐ ๊ฒฝ์ฐ ๋ค์ ๋ ๊ฐ์ง๋ฅผ ํด ๋ณด๋ผ.
์ฒซ ๋ฒ์งธ๋ก, ์์ผ๋ก ์ด๋ค ๋ชจ์ต์ผ๋ก ๋ฐ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ ๋ ์ธ์ ๊ฑด ๊ถ๊ทน์ "๋ฐ๊พธ๊ธฐ ์ฝ๊ฒ"๋ผ๋ ๊ธธ์ ์ ํํ๋ค. ๋ฐ๋ก ์ฌ๋ฌ๋ถ์ด ์์ฑํ๋ ์ฝ๋๋ฅผ ๊ต์ฒดํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค๋๋ก ๋ ธ๋ ฅํ๋ ๊ฒ์ด๋ค. ๊ต์ฒด ๊ฐ๋ฅํ๊ฒ ์์ฑํ๋ผ๋ ๋ง์ ์ฝ๋์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ ์์ง๋๋ฅผ ๋์ด๋ผ๋ ์ด์ผ๊ธฐ์ผ ๋ฟ์ด๋ค.
๋ ๋ฒ์งธ๋ ์ด๋ฐ ๊ฒฝ์ฐ๋ฅผ ์ฌ๋ฌ๋ถ์ ์ง๊ด์ ๋ฐ์ ์ํค๋ ๊ธฐํ๋ก ์ผ์ผ๋ผ๋ ๊ฒ์ด๋ค.
๐ญ Topic 9. DRY: ์ค๋ณต์ ํด์ โ
์ง์์ ๋ณํํ๋ค. ๋๋ก๋ ๊ธ๊ฒฉํ๊ฒ ๋ณํํ๋ค. ํ๋ก๊ทธ๋๋จธ๋ ๋ ์ ์ง ๋ณด์ ๋ชจ๋์ ์๋ค. ์ฐ๋ฆฌ์ ์ดํด๋ ๋ ๋ง๋ค ๋ฐ๋๋ค. ์ฐ๋ฆฌ๊ฐ ํ๋ก์ ํธ์ ์ด์คํด ์๋ ๋์์๋ ์ ๋ก์ด ์๊ตฌ ์ฌํญ์ด ๋์ฐฉํ๊ณ ๊ธฐ์กด ์๊ตฌ ์ฌํญ์ ์งํํ๋ค.
์ํํธ์จ์ด๋ฅผ ์ ๋ขฐ์ฑ ๋๊ฒ ๊ฐ๋ฐํ๋ ์ ์ผํ ๊ธธ, ๊ฐ๋ฐ์ ์ดํดํ๊ณ ์ ์ง ๋ณด์ํ๊ธฐ ์ฝ๊ฒ ๋ง๋๋ ์ ์ผํ ๊ธธ์ ์ฐ๋ฆฌ๊ฐ DRY๋ผ ๋ถ๋ฅด๋ ์์น์ ๋ฐ๋ฅด๋ ๊ฒ์ด๋ผ ์๊ฐํ๋ค. DRY ์์น์ ๋ค์๊ณผ ๊ฐ๋ค.
๋ชจ๋ ์ง์์ ์์คํ
๋ด์์ ๋จ ํ ๋ฒ๋ง, ์ ๋งคํ์ง ์๊ณ , ๊ถ์ ์๊ฒ ํํ๋์ด์ผ ํ๋ค.
Tip 15. DRY: ๋ฐ๋ณตํ์ง ๋ง๋ผ(Don't Repeat Yourself)
DRY๋ฅผ ๋ฐ๋ฅด์ง ์์ผ๋ฉด ๋๊ฐ์ ๊ฒ์ด ๋ ๊ตฐ๋ฐ ์ด์์ ํํ๋ ๊ฒ์ด๋ค. ํ๋๋ฅผ ๋ฐ๊พธ๋ฉด ๋๋จธ์ง๋ ๋ฐ๊ฟ์ผ ํจ์ ๊ธฐ์ตํด์ผ ํ๋ค. ์ฐ๋ฆฌ๋ DRY๊ฐ "์ค์ฉ์ฃผ์ ํ๋ก๊ทธ๋๋จธ"์ ๋๊ตฌ ์์์์ ๊ฐ์ฅ ์ค์ํ ๋๊ตฌ ์ค ํ๋๋ผ๊ณ ์๊ฐํ๋ค.
๐ฅ DRY๋ ์ฝ๋ ๋ฐ์์๋โ
๋ง์ ์ฌ๋๋ค์ด DRY๊ฐ ์ฝ๋์๋ง ํด๋นํ๋ค๊ณ ๋ฐ์๋ค์๋ค. "์์ค ์ฝ๋๋ฅผ ๋ณต์ฌ-๋ถ์ฌ๋ฃ๊ธฐ ํ์ง ๋ง๋ผ."๋ก ์ดํดํ ๊ฒ์ด๋ค.
๊ทธ๊ฒ๋ DRY์ ์ผ๋ถ์ธ ๊ฒ์ ๋ง๋ค. ํ์ง๋ง ์์ฃผ ์๊ณ ์๋ช ํ ๋ถ๋ถ์ผ ๋ฟ์ด๋ค. DRY๋ ์ง์์ ์ค๋ณต, ์๋์ ์ค๋ณต์ ๋ํ ๊ฒ์ด๋ค. ๋๊ฐ์ ๊ฐ๋ ์ ๋ค๋ฅธ ๊ณณ ๋ ๊ตฐ๋ฐ์์ ํํํ๋ฉด ์ ๋๋ค๋ ๊ฒ์ด๋ค. ๊ฒฝ์ฐ์ ๋ฐ๋ผ์ ์ค๋ณต ํํ์ด ๋ ๊ฐ์ง ์์ ํ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ง ์๋ ์๋ค.
๐ฅ ๋ชจ๋ ์ฝ๋ ์ค๋ณต์ด ์ง์์ ์ค๋ณต์ ์๋๋คโ
def validate_age(value):
validate_type(value, :integer)
validate_min_integer(value, 1)
def validate_quantity(value):
validate_type(value, :integer)
validate_min_integer(value, 1)
์ฝ๋๋ ๋์ผํ์ง๋ง ๋ ํจ์๊ฐ ํํํ๋ ์ง์์ ๋ค๋ฅด๋ค. ๋ ํจ์๋ ๊ฐ๊ฐ ์๋ก ๋ค๋ฅธ ๊ฒ์ ๊ฒ์ฆํ๊ณ ์์ง๋ง, ์ฐ์ฐํ ๊ท์น์ด ๊ฐ์ ๊ฒ๋ฟ์ด๋ค. ์ด๊ฒ์ ์ฐ์ฐ์ด์ง ์ค๋ณต์ด ์๋๋ค.
๐ฅ ๋ฌธ์ํ ์ค๋ณตโ
์์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋ชจ๋ ํจ์์ ์ฃผ์์ ๋ฌ์์ผ ํ๋ค๋ ๋ฏธ์ ์ด ์๊ฒจ๋ฌ๋ค. ํ ๋ฒ์ ์ฃผ์์ผ๋ก, ๋ ํ ๋ฒ์ ์ฝ๋๋ก ํจ์์ ์๋๋ ๋ ๋ฒ ํํ๋๋ค.
์ฐ๋ฆฌ๋ ์์ ์ฌํญ์ด ์๊ธฐ๋ฉด ๋ ๊ตฐ๋ฐ๋ฅผ ํจ๊ผ ๊ณ ์ณ์ผ ํ๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ฃผ์๊ณผ ์ฝ๋์ ๋ด์ฉ์ด ์๋ก ์ด๊ธ๋๊ฒ ๋ ๊ฑฐ๋ผ๊ณ ๊ฑฐ์ ํ์คํ ์ฅ๋ดํ ์ ์๋ค.
์ฐ๋ฆฌ๊ฐ ๋ณด๊ธฐ์๋ ์ด๋ฆ์ด๋ ์ฝ๋ ๊ตฌ์กฐ์ ๋ถ์คํจ์ ๋ฉ๊พธ๋ ์ญํ ์ ํ ๋ฟ์ด๋ค. ํจ์ ์ด๋ฆ์ด ํจ์๊ฐ ํ๋ ์ผ์ ์๋ ค์ค๋ค. ๋ ์์ธํ ๊ฒ์ ์๊ณ ์ถ๋ค๋ฉด ์์ค ์ฝ๋๋ฅผ ๋ณด๋ฉด ๋๋ค. ์ด๊ฒ์ด DRY๋ค!
๐ฅ ํํ์์ ์ค๋ณตโ
์ฌ๋ฌ๋ถ์ ์ฝ๋๋ ๋ฐ๊นฅ์ธ์๊ณผ ์ฐ๊ฒฐ๋๋ค. ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ API๋ก, ๋ค๋ฅธ ์๋น์ค์๋ ์๊ฒฐ ํธ์ถ์ด๋ ์ธ๋ถ ์ ์ฅ์์ ๋ฐ์ดํฐ ๋ฑ์ผ๋ก ์ฐ๊ฒฐ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ฒ ์ฐ๊ฒฐ๋ ๋๋ง๋ค ์ผ์ข ์ DRY ์๋ฐ์ ํ๊ฒ ๋๋ค. ์ธ๋ถ์ ๋ฌด์ธ๊ฐ์ ํํ๋ ์ง์์ธ API๋ ์คํค๋ง, ์๋ฌ ์ฝ๋์ ์๋ฏธ ๋ฑ์ ์ฌ๋ฌ๋ถ์ ์ฝ๋๋ ์์์ผ๋ง ํ๋ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์๋ ์ฐ๊ฒฐ์ ํํํ๋ ์ง์์ ์ฌ๋ฌ๋ถ์ ์ฝ๋์ ์ธ๋ถ์ ์กด์ฌ ์์ชฝ์ด ๋ชจ๋ ์์์ผ ํ๊ธฐ ๋๋ฌธ์ ์ค๋ณต์ด ์๊ธด๋ค. ํ์ชฝ์์๋ง ๋ฐ๊พธ๋ฉด ๋ค๋ฅธ ์ชฝ์ ๋ง๊ฐ์ง ๊ฒ์ด ๋ค.
์ด๋ฐ ์ค๋ณต์ ์์ ํผํ ์๋ ์์ง๋ง ๋ค์ ์ํํ ์๋ ์๋ค.
๋ด๋ถ API์์ ์๊ธฐ๋ ์ค๋ณตโ
์ธ์ด๋ ๊ธฐ์ ์ ์ค๋ฆฝ์ ์ธ ํ์์ผ๋ก ๋ด๋ถ API๋ฅผ ์ ์ํ ์ ์๋ ๋๊ตฌ๋ฅผ ์ฐพ์๋ณด๋ผ. ์ด๋ฐ ๋๊ตฌ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฌธ์์ ๋ชฉ API, ๊ธฐ๋ฅ ํ ์คํธ๋ฅผ ์์ฑํด ์ฃผ๊ณ , API ํด๋ผ์ด์ธํธ๋ ์ฌ๋ฌ ๊ฐ์ง ์ธ์ด๋ก ์์ฑํด ์ค๋ค. ์ด์์ ์ผ๋ก๋ ์ด ๋๊ตฌ๋ฅผ ์ด์ฉํ์ฌ ๋ชจ๋ API ์ ์๋ฅผ ์ค์ ์ ์ฅ์์ ๋ฃ์ด ๋๊ณ ์ฌ๋ฌ ํ์ด ๊ณต์ ํ ์ ์๊ฒ ํ๋ฉด ์ข๋ค.
์ธ๋ถ API์์ ์๊ธฐ๋ ์ค๋ณตโ
๊ณต๊ฐ API๋ฅผ OpenAPI ๊ฐ์ ํ์์ผ๋ก ์๋ฐํ๊ฒ ๋ฌธ์ํํ๋ ๊ฒฝ์ฐ๊ฐ ์ ์ ๋ง์์ง๊ณ ์๋ค. ์ด๋ฐ ํ์์ API ๋ช ์ธ๋ฅผ ์ฌ๋ฌ๋ถ์ API ๋๊ตฌ๋ก ๋ถ๋ฌ์์ ์ฌ์ฉํ๋ฉด ๋์ฑ ์ ๋ขฐ์ฑ ์๊ฒ ํด๋น ์๋น์ค๋ฅผ ์ฐ๋ํ ์ ์๋ค.
๋ฐ์ดํฐ ์ ์ฅ์์์ ์ค๋ณตโ
๋ง์ ๋ฐ์ดํฐ ์ ์ฅ์๊ฐ ๋ฐ์ดํฐ ์คํค๋ง ๋ถ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ์ด๋ฐ ๊ธฐ๋ฅ์ ์ด์ฉํ๋ฉด ๋ฐ์ดํฐ ์ ์ฅ์์ ์ฝ๋ ๊ฐ์ ์ค๋ณต์ ๋ง์ด ์ ๊ฑฐํ ์ ์๋ค.
๐ฅ ๊ฐ๋ฐ์ ๊ฐ์ ์ค๋ณตโ
์๋ง ๋ฐ๊ฒฌํ๊ฑฐ๋ ์์ ๊ธฐ ๊ฐ์ฅ ์ด๋ ค์ด ์ ํ์ ์ค๋ณต์ ๊ฐ์ ํ๋ก์ ํธ์์ ์ผํ๋ ๊ฐ๋ฐ์๋ค ์ฌ์ด์์ ๋ฐ์ํ ๊ฒ์ด๋ค. ๋๊ฐ์ ์ผ์ ํ๋ ์ฝ๋๊ฐ ์ฐ์ฐํ ์ค๋ณต์ผ๋ก ์ถ๊ฐ๋ ์ ์๊ณ , ์ด๋ฐ ์ค๋ณต์ ์๋
๋์ ๋ฐ๊ฒฌ๋์ง ์์ ์ ์๋ค.
๊ฐ๋ฐ์๋ค์ ์ฐ์ถ๋ฌผ ๊ฐ์ ์ค๋ณต์ ๋์ฒํ๋ ค๋ฉด ํฌ๊ฒ๋ ์์ฌ์ํต์ ์ํ๋ ํผํผํ๊ณ ์ ๋๊ฐ ๋๋
ํ ํ์ ๋ง๋ค์ด์ผ ํ๋ค. ์ฐ๋ฆฌ๊ฐ ๋๋ผ๊ธฐ์ ์ต์ ์ฑ
์ ๊ฐ๋ฐ์ ๊ฐ์ ์ ๊ทน์ ์ด๊ณ ๋น๋ฒํ ์ํต์ ์ฅ๋ คํ๋ ๊ฒ์ด๋ค.
์ผ์ผ ์คํฌ๋ผ ์คํ ๋์
๋ฏธํ
์ ์ด์ํด ๋ณผ ์ ์๋ค. ์ฌ๋ ์ฑ๋๊ฐ์ด ๊ณตํต์ ๋ฌธ์ ๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํ ๊ณต๊ฐ์ ๋ง๋ค๋ผ. ์ด๋ฐ ์ํํธ์จ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ๋ํ ๊ธฐ๋ก์ ๋ณด์กดํ ์ ์๊ณ , ๋ฐฉํด๋ฅผ ์ต์ํํ๋ฉด์ ์์ฌ์ํต์ด ๊ฐ๋ฅํ๋ค.
ํ์ ํ ์ฌ๋์ ํ๋ก์ ํธ ์ฌ์๋ก ์๋ช ํ๋ผ. ํ๋ก์ ํธ ์ฌ์์ ์ญํ ์ ์ง์ ๊ตํ์ ๋๋ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ผ์์ ์ผ๋ก๋ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํตํด์๋ ๋ค๋ฅธ ์ฌ๋์ ์์ค ์ฝ๋์ ๋ฌธ์๋ฅผ ๋ฐ๋์ ์ฝ์ด๋ผ. ๋ค๋ฅธ ์ฌ๋์ ๊ฒ์ ๊ธฐ์๊ฑฐ๋ฆฌ๋ ๊ฒ ์๋๊ณ , ๊ฑฐ๊ธฐ์ ๋ฐฐ์ฐ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๊ธฐ์ตํ๋ผ. ์ ๊ทผ์ ์ํธ์ ์ด๋ค. ๋ค๋ฅธ ์ฌ๋์ด ์ฌ๋ฌ๋ถ์ ์ฝ๋๋ฅผ ๋ค์ฌ๋ค๋ณด๊ณ ๊ฑด๋๋ฆฐ๋ค๊ณ ํด์ ๊ธฐ๋ถ ๋๋น ํ์ง ๋ง ์ผ์ด๋ค.
Tip 14. ์ฌ์ฌ์ฉํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด๋ผ.
์ฌ๋ฌ๋ถ์ ๋ญ๊ฐ๋ฅผ ์ง์ ๋ง๋๋ ๊ฒ๋ณด๋ค ๊ธฐ์กด์ ๊ฒ์ ์ฐพ์๋ด๊ณ ์ฌ์ฌ์ฉํ๊ธฐ ์ฌ์ด ํ๊ฒฝ์ ์กฐ์ฑํด์ผ ํ๋ค. ์ฌ๋๋ค์ ์ฝ์ง ์์ผ๋ฉด ํ์ง ์์ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ฌ์ฉ์ ์คํจํ๋ค๋ฉด ์ง์ ์ค๋ณต์ ์ํ์ ๊ฐ์ํด์ผ ํ๋ค.
๐ญ Topic 10. ์ง๊ต์ฑโ
์ง๊ต์ฑ(orthogonality)์ ์ค๊ณ์ ๋น๋, ํ ์คํธ, ํ์ฅ์ด ์ฌ์ด ์์คํ ์ ๋ง๋๋ ๋ฐ์ ์์ด ๋งค์ฐ ์ค์ํ ๊ฐ๋ ์ด๋ค.
๐ฅ ์ง๊ต์ฑ์ด๋โ
์ปดํจํฐ ๊ณผํ์์ ์ด ์ฉ์ด๋ ์ผ์ข ์ ๋ ๋ฆฝ์ฑ์ด๋, ๊ฒฐํฉ๋ ์ค์ด๊ธฐ๋ฅผ ์๋ฏธํ๋ค. ํ๋๊ฐ ๋ฐ๋์ด๋ ๋๋จธ์ง์ ์ด๋ค ์ํฅ๋ ์ฃผ์ง ์์ผ๋ฉด ์๋ก ์ง๊ตํ๋ค๊ณ ํ ์ ์๋ค. ์ ์ค๊ณ๋ ์์คํ ์์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฝ๋๊ฐ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ์๋ก ์ง๊ตํ ๊ฒ์ด๋ค.
๐ฅ ์ง๊ต์ฑ์ ์ฅ์ โ
๋น์ง๊ต์ ์ธ ์์คํ ์ ๋ณธ์ง์ ์ผ๋ก ๋ณ๊ฒฝ๊ณผ ์กฐ์ ์ด ๋ ๋ณต์กํ๋ค. ์์คํ ์ ์ปดํฌ๋ํธ๋ค์ด ๊ณ ๋๋ก ์ํธ ์์กด์ ์ธ ๊ฒฝ์ฐ ํน์ ๋ถ๋ถ๋ง ๊ตญ์ง์ ์ผ๋ก ์์ ํ๋ ๋ฐฉ๋ฒ์ด๋ ์๋ค.
Tip 17. ๊ด๋ จ ์๋ ๊ฒ๋ค ๊ฐ์ ์๋ก ์ํฅ์ด ์๋๋ก ํ๋ผ.
์ฐ๋ฆฌ๊ฐ ์ค๊ณํ๊ณ ์ถ์ ๊ฒ์ ์์กฑ์ ์ธ ์ปดํฌ๋ํธ, ์ฆ ๋จ์ผํ๊ณ ์ ์ ์๋ ๋ชฉ์ ์ ๊ฐ์ง ๋ ๋ฆฝ์ ์ธ ์ปดํฌ๋ํธ๋ค. ์ปดํฌ๋ํธ๋ค์ด ๊ฐ๊ธฐ ๊ฒฉ๋ฆฌ๋์ด ์์ผ๋ฉด ์ด๋ ํ๋๋ฅผ ๋ฐ๊ฟ ๋ ๋๋จธ์ง ๊ฒ๋ค์ ๊ฑฑ์ ํ์ง ์์๋ ๋๋ค. ํด๋น ์ปดํฌ๋ํธ์ ์ธ๋ถ ์ธํฐํ์ด์ค๋ฅผ ๋ฐ๊พธ์ง ์๋ ํ ์ ์ฒด ์์คํ ์ผ๋ก ํผ์ ธ ๋๊ฐ๋ ๋ฌธ์ ๋ฅผ ์ผ์ผํค์ง๋ ์์ผ๋ฆฌ๋ผ๊ณ ํ์ ํ ์ ์๋ค.
์ง๊ต์ ์ธ ์์คํ ์ ์์ฑํ๋ฉด ๋ ๊ฐ์ง ํฐ ์ฅ์ ์ด ์๋ค. ๋ฐ๋ก ์์ฐ์ฑ ํฅ์๊ณผ ๋ฆฌ์คํฌ ๊ฐ์๋ค.
์์์ฑ ํฅ์โ
- ๋ณํ๋ฅผ ๊ตญ์ํํด์ ๊ฐ๋ฐ ์๊ฐ๊ณผ ํ ์คํธ ์๊ฐ์ด ์ค์ด๋ ๋ค. ์๋์ ์ผ๋ก ์๊ณ , ์์กฑ์ ์ธ ์ปดํฌ๋ํธ๋ค์ ์์ฑํ๋ ๊ฒ์ด ํ๋์ ์ปค๋ค๋ ์ฝ๋ ๋ฉ์ด๋ฆฌ๋ฅผ ๋ง๋๋ ๊ฒ๋ณด๋ค ๋ ์ฝ๋ค. ๊ฐ๋จํ ์ปดํฌ๋ํธ๋ ์ค๊ณํ๊ณ , ์ฝ๋ฉํ๊ณ , ํ ์คํธํ๊ณ , ๊ทธ๋ฌ๊ณ ๋ ์์ด๋ฒ๋ฆด ์ ์๋ค. ์๋ก์ด ์ฝ๋๋ฅผ ์ถ๊ฐํ ๋๋ง๋ค ๊ธฐ์กด์ ์ฝ๋๋ฅผ ๊ณ์ ๋ฐ๊พธ์ง ์์๋ ๋๋ค.
- ์ง๊ต์ ์ธ ์ ๊ทผ๋ฒ์ ์ฌ์ฌ์ฉ๋ ์ด์ง๋๋ค. ์ปดํฌ๋ํธ์ ๋ช ํํ๊ณ ์ ์ ์๋ ์ฑ ์์ด ํ ๋น๋์ด ์์ผ๋ฉด ์ ์ด์ ๊ตฌํ์๊ฐ ์์ํ์ง ๋ชปํ ๋ฐฉ์์ผ๋ก ์๋ก์ด ์ปดํฌ๋ํธ์ ๊ฒฐํฉํ ์ ์๋ค. ์์คํ ์ด ๋ ๋์จํ๊ฒ ๊ฒฐํฉ๋์ด ์์์๋ก ์ฌ์กฐํฉํ๊ณ ๊ฐ๋ํ๊ธฐ ์ฝ๋ค.
- ์ง๊ต์ ์ธ ์ปดํฌ๋ํธ๋ค์ ๊ฒฐํฉํ๋ ๊ฒฝ์ฐ ์ป์ ์ ์๋ ๊ฝค ๋ฏธ๋ฌํ ์์ฐ์ฑ ํฅ์ ์์๊ฐ ์๋ค. ์ปดํฌ๋ํธ ํ๋๊ฐ M๊ฐ์ง ์๋ก ๋ค๋ฅธ ์ผ์ ํ๊ณ ๋ ๋ค๋ฅธ ์ปดํฌ๋ํธ ํ๋๊ฐ N๊ฐ์ง ์ผ์ ํ๋ค๊ณ ๊ฐ์ ํ์. ๋ง์ฝ ๋ ์ปดํฌ๋ํธ๊ฐ ์ง๊ต์ ์ด๋ผ๋ฉด ๊ฒฐํฉํ์ ๋ ๊ฒฐ๊ณผ๋ฌผ์ M x N๊ฐ์ง ์ผ์ ํ๋ค.
๋ฆฌ์คํฌ ๊ฐ์โ
์ง๊ต์ ์ธ ์ ๊ทผ๋ฒ์ ๋ชจ๋ ๊ฐ๋ฐ ์์ ์ ์กด์ฌํ ์๋ฐ์ ์๋ ์ํ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์์์ผ ์ค๋ค.
- ๊ฐ์ผ๋ ์ฝ๋๊ฐ ๊ฒฉ๋ฆฌ๋์ด ์๋ค.
- ์์คํ ์ด ์ ๊นจ์ง์ง ์๋๋ค. ์ด๋ค ๋ถ๋ถ์ ๊ณจ๋ผ์ ์ฝ ๊ฐ ๋ฐ๊พธ๊ณ ๊ณ ์ณค์ ๋ ํน์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋๋ผ๋ ๋ฌธ์ ์ ์ ๊ทธ ๋ถ๋ถ์ผ๋ก ํ์ ๋ ๊ฒ์ด๋ค.
- ์ง๊ต์ ์ธ ์์คํ ์ ๊ทธ ์์ ์ปดํฌ๋ํธ๋ค์ ๋ํด ํ ์คํธ๋ฅผ ์ค๊ณํ๊ณ ์คํํ๊ธฐ ํจ์ฌ ์ฝ๊ธฐ ๋๋ฌธ์, ์๋ฌด๋๋ ํ ์คํธ๋ฅผ ๋ ๋ง์ด ํ๊ฒ ๋๋ค.
- ํน์ ์ ์ฒด๋ ์ ํ, ํ๋ซํผ์ ๋ ์ข ์๋ ๊ฒ์ด๋ค.
๐ฅ ์ค๊ณโ
์์คํ ์ ์๋ก ํ๋ ฅํ๋ ๋ชจ๋์ ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋์ด์ผ ํ๊ณ , ๊ฐ ๋ชจ๋์ ๋ค๋ฅธ ๋ถ๋ถ๊ณผ ๋ ๋ฆฝ์ ์ธ ๊ธฐ๋ฅ์ ๊ตฌํํด์ผ ํ๋ค. ๊ณ์ธต ๊ตฌ์กฐ๋ ์ง๊ต์ ์์คํ ์ ์ค๊ณํ๋ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ด๋ค. ๊ฐ ๊ณ์ธต์ ์๊ธฐ ๋ฐ๋ก ๋ฐ์ ์๋ ๊ณ์ธต์ด ์ ๊ณตํ๋ ์ถ์ํ๋ง์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ๋ค๋ฅธ ์ฝ๋์ ์ํฅ์ ๋ผ์น์ง ์์ผ๋ฉด์ ๊ธฐ๋ฐ ๊ตฌํ๋ค์ ๋ณ๊ฒฝํ ์ ์๊ฒ ๋์ด ์ ์ฐ์ฑ์ด ๋์์ง๋ค. ๊ณ์ธต ๊ตฌ์กฐ๋ ๋ํ ๋ชจ๋ ๊ฐ์ ์์กด์ฑ์ด ํญ์ฆํ ์ํ์ ์ค์ธ๋ค.
์ค๊ณ๊ฐ ์ง๊ต์ ์ธ์ง ํ์ธํ๋ ์์ฌ์ด ๋ฐฉ๋ฒ์ด ์๋ค. ์ปดํฌ๋ํธ๋ค์ ๋๋์์ ๋ ๋ค์๊ณผ ๊ฐ์ด ์ค์ค๋ก์๊ฒ ๋ฌผ์ด๋ณด๋ผ. "ํน์ ๊ธฐ๋ฅ์ ๋ํ ์๊ตฌ ์ฌํญ์ ๋ํญ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ ๋ช ๊ฐ์ ๋ชจ๋์ด ์ํฅ์ ๋ฐ๋๊ฐ?" ์ง๊ต์ ์ธ ์์คํ ์์๋ ๋ต์ด "ํ๋"์ฌ์ผ ํ๋ค.
์ฌ๋ฌ๋ถ์ด ์ ์ดํ ์ ์๊ณ , ์ธ์ ์ด๋ค ์ด์ ๋ก๋ ๋ฐ๋ ์ ์๋ค. ์์ ์ ํ์ผ๋ก ์ ์ดํ ์ ์๋ ์์ฑ์ ์์กดํ์ง ๋ง๋ผ.
๐ฅ ํดํท๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌโ
์ธ๋ถ์์ ๋ง๋ ํดํท์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋์ ํ ๋ ์์คํ ์ ์ง๊ต์ฑ์ ํด์น์ง ์๋์ง ์ฃผ์ ๊น๊ฒ ์ดํด๋ณด๊ธฐ ๋ฐ๋๋ค. ๊ธฐ์ ์ ํ๋ช ํ๊ฒ ์ ํํ๋ผ.
ํดํท์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋์ ํ ๋๋ ์ฌ์ง์ด ๊ฐ์ ํ์ ๋ค๋ฅธ ๋ฉค๋ฒ๊ฐ ์์ฑํ ๊ฒ์ด๋๋ผ๋ ์ด๊ฒ์ด ์ฌ๋ฌ๋ถ์ ์ฝ๋์ ์์ฉํด์๋ ์ ๋ ๋ณํ๋ฅผ ๊ฐ์ํ์ง ์๋์ง ๊ฒํ ํด ๋ณด๋ผ.
๐ฅ ์ฝ๋ฉโ
์ฝ๋๋ฅผ ์์ฑํ ๋๋ง๋ค ์ฌ๋ฌ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง๊ต์ฑ์ ๋จ์ดํธ๋ฆด ์ํ์ ๊ฐ์ํ๋ ์ ์ด๋ค. ํ์ฌ ์ฝ๋ฉํ๋ ๋ถ๋ถ๋ฟ๋ง ์๋๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ํฐ ๋งฅ๋ฝ์ ๋์์์ด ์ดํผ์ง ์์ผ๋ฉด ์๋์น ์๊ฒ ๋ค๋ฅธ ๋ชจ๋์ ์๋ ๊ธฐ๋ฅ์ ๋ ์ถ๊ฐํ๊ฑฐ๋ ๋์ผํ ์ง์์ ๋ ๋ฒ ํํํ ์ ์๋ค.
์ง๊ต์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ฌ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ๊ธฐ๋ฒ์ด ์๋ค.
์ฝ๋์ ๊ฒฐํฉ๋๋ฅผ ์ค์ฌ๋ผโ
๋ถ๋๋ผ์์ด(shy) ์ฝ๋๋ฅผ ์์ฑํ๋ผ. ์ฆ, ๋ถํ์ํ ๊ฒ์ ๋ค๋ฅธ ๋ชจ๋์ ๋ณด์ฌ ์ฃผ์ง ์์ผ๋ฉฐ, ๋ค๋ฅธ ๋ชจ๋์ ๊ตฌํ์ ์์กดํ์ง ์๋ ์ฝ๋๋ฅผ ์์ฑํ๋ผ. ๊ทธ๋ฆฌ๊ณ ๋ฐ๋ฉํ ๋ฅด ๋ฒ์น์ ๋ฐ๋ฅด๋ ค ๋ ธ๋ ฅํด ๋ณด์. ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ฐ๊ฟ ํ์๊ฐ ์๋ค๋ฉด ์ฌ๋ฌ๋ถ์ ์ํด ๊ฐ์ฒด๊ฐ ์ง์ ์ํ๋ฅผ ๋ฐ๊พธ๊ฒ ํ๋ผ. ์ด๋ ๊ฒ ํ๋ค๋ฉด ์ฝ๋๋ ๋ค๋ฅธ ์ฝ๋ ๊ตฌํ์ผ๋ก๋ถํฐ ๋ถ๋ฆฌ๋ ์ฑ๋ก ๋จ์์์ ๊ฒ์ด๋ฉฐ, ๊ณ์ํ์ฌ ์ง๊ต์ฑ์ ์ ์งํ ํ๋ฅ ์ด ๋์์ง๋ค.
์ ์ญ ๋ฐ์ดํฐ๋ฅผ ํผํ๋ผโ
์ฝ๋๊ฐ ์ ์ญ ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐํ ๋๋ง๋ค ์ฝ๋๋ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋ ๋ค๋ฅธ ์ปดํฌ๋ํธ์ ๋ฌถ์ด๊ฒ ๋๋ค.
์ ์ฌํ ํจ์๋ฅผ ํผํ๋ผโ
์ข ์ข ์ ์ฌํด ๋ณด์ด๋ ํจ์๋ฅผ ์ฌ๋ฟ ๊ตฌํํด์ผ ํ ๋๊ฐ ์๋ค. ์๋ง๋ ์์๊ณผ ๋์์๋ ๋์ผํ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ง๋ง, ์ค๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ด ๋ค๋ฅผ ๊ฒ์ด๋ค. ์ค๋ณต ์ฝ๋๋ ๊ตฌ์กฐ์ ๋ฌธ์ ๊ฐ ์๋ค๋ ์งํ๋ค.
์์ ์ด ์์ฑํ๋ ์ฝ๋๋ฅผ ํญ์ ๋นํ์ ์ผ๋ก ๋ฐ๋ผ๋ณด๋ ์ต๊ด์ ๊ธธ๋ฌ๋ผ. ๊ธฐํ๊ฐ ์์ ๋๋ง๋ค ์ฝ๋์ ๊ตฌ์กฐ์ ์ง๊ต์ฑ์ ๊ฐ์ ํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๋ผ. ์ด๋ฐ ๊ณผ์ ์ ๋ฆฌํฉํฐ๋ง์ด๋ผ ๋ถ๋ฅธ๋ค.
๐ฅ ํ ์คํธโ
์ง๊ต์ ์ผ๋ก ์ค๊ณํ๊ณ ๊ตฌํํ ์์คํ ์ ํ ์คํธํ๊ธฐ ๋ ์ฝ๋ค. ์์คํ ์ปดํฌ๋ํธ ๊ฐ์ ์ํธ ์์ฉ์ด ํ์์ ์ ๊ฐ์ถ๊ณ ์๊ณ ์ ํ์ ์ด๊ธฐ ๋๋ฌธ์ ์์คํ ํ ์คํธ ์ค ๋ง์ ๋ถ๋ถ์ ๊ฐ๋ณ ๋ชจ๋ ์์ค์์ ์ํํ ์ ์๋ค. ๋ชจ๋ ์์ค์ ํ ์คํธ๋ ๋จ์ ํ ์คํธ๊ฐ ํตํฉ ํ ์คํธ๋ณด๋ค ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋ง๋ค๊ณ ์ํํ๊ธฐ ํจ์ฌ ์ฌ์ฐ๋ฏ๋ก ์ด๋ ์ข์ ์์์ด๋ผ ํ ์ ์๋ค.
๋จ์ ํ ์คํธ๋ฅผ ์์ฑํ๋ ํ์ ์์ฒด๊ฐ ์ง๊ต์ฑ์ ํ ์คํธํด ๋ณผ ์ ์๋ ๊ธฐํ๋ค. ๋จ์ ํ ์คํธ๋ฅผ ๋น๋ํ๊ณ ์คํํ๊ธฐ ์ํด ์ด๋ค ์์ ์ด ํ์ํ๊ฐ? ๋๋จธ์ง ์์คํ ์ค ์๋น ๋ถ๋ถ์ ๋ถ๋ฌ์์ผ ํ์ง๋ ์๋๊ฐ? ๋ง์ฝ ๊ทธ๋ ๋ค๋ฉด ๋ชจ๋๊ณผ ๋๋จธ์ง ์์คํ ์ฌ์ด์ ๊ฒฐํฉ๋๋ฅผ ์ถฉ๋ถํ ์ค์ด์ง ๋ชปํ๋ค๋ ๋ป์ด๋ค.
๋ง์ฝ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ ์ฌ์ฉํ๋ค๋ฉด, ํ ์คํธ๋ฅผ ๋ง์น ๋ค ์ฝ๋๋ฅผ ๋ณํฉํ ๋ ๋ฒ๊ทธ ์์ ์ ๋ํ ํ๊ทธ๋ฅผ ๋ถ์ฌ๋ผ. ์ด๋ ๊ฒ ํ๋ฉด ๋ฒ๊ทธ ์์ ๋ง๋ค ์์ ํ ์์ค ํ์ผ ๊ฐ์๋ฅผ ์์งํ์ฌ ๊ทธ ๊ฒฝํฅ์ ๋ถ์ํ ์ ๋จ์ ๋ฆฌํฌํธ๋ฅผ ๋ง๋ค ์ ์์ ๊ฒ์ด๋ค.
๐ฅ ๋ฌธ์ํโ
๋๋๊ฒ๋ ์ง๊ต์ฑ์ ๋ฌธ์์๋ ์ ์ฉํ ์ ์๋ค. ๋ด์ฉ๊ณผ ํํ์ด๋ผ๋ ๋ ๊ฐ์ ์ถ์ด ์๋ค. ์ ๋ง ์ง๊ต์ ์ธ ๋ฌธ์๋ผ๋ฉด ๋ด์ฉ ๋ณํ ์์ด ๋ชจ์์๋ฅผ ์์ ํ ๋ฐ๊ฟ ์ ์์ ๊ฒ์ด๋ค. ์๋ ํ๋ก์ธ์๊ฐ ์ ๊ณตํ๋ ์คํ์ผ ์ํธ์ ๋งคํฌ๋ก๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๊ฒ ํ ์ ์๋ค. ์ฐ๋ฆฌ๋ ๊ฐ์ธ์ ์ผ๋ก ๋งํฌ๋ค์ด ๊ฐ์ ๋งํฌ์ ์ฒด๊ณ๋ฅผ ์ข์ํ๋ค. ๋ด์ฉ์ ์ธ ๋๋ ๋ด์ฉ์๋ง ์ง์คํ๊ณ , ์์๊ฒ ๊พธ๋ฏธ๋ ๊ฒ ๊ฐ์ ๋ค๋ฅธ ๋ณํ ๋๊ตฌ์ ๋งก๊ธธ ์ ์๋ค.
๐ฅ ์ง๊ต์ ์ผ๋ก ์ด์๊ฐ๊ธฐโ
์ง๊ต์ฑ์ DRY ์์น๊ณผ๋ ๋ฐ์ ํ ๊ด๊ณ๊ฐ ์๋ค. DRY ์์น์ ์์คํ ๋ด๋ถ์ ์ค๋ณต์ ์ต์ํํ๊ณ , ์ง๊ต์ฑ์ ์์คํ ์ปดํฌ๋ํธ ๊ฐ์ ์ํธ ์์กด๋๋ฅผ ์ค์ธ๋ค. DRY ์์น์ผ๋ก ๋ฌด์ฅํ๊ณ ์ง๊ต์ฑ ์์น์ ์ถฉ์คํ ์ ์ฉํ๋ค๋ฉด ๊ฐ๋ฐํ๊ณ ์๋ ์์คํ ์ด ๋ ์ ์ฐํ๊ณ ์ดํดํ๊ธฐ ์ฌ์์ง ๊ฒ์ด๋ค. ๋๋ฒ๊น , ํ ์คํธ, ์ ์ง ๋ณด์ ๋ํ ์ฌ์์ง ๊ฒ์ด๋ค.
๐ญ Topic 11. ๊ฐ์ญ์ฑโ
๐ฅ ๊ฐ์ญ์ฑโ
์ฌ๊ธฐ์ ์ถ์ฒํ๋ ๋ฐฉ๋ฒ๋ค, ํนํ DRY ์์น, ๊ฒฐํฉ๋ ์ค์ด๊ธฐ, ์ธ๋ถ ์ค์ ์ฌ์ฉํ๊ธฐ๋ฅผ ๋ฐ๋ฅธ๋ค๋ฉด ์ค์ํ๋ฉด์๋ ๋๋๋ฆด ์ ์๋ ๊ฒฐ์ ์ ์๋ฅผ ๊ฐ๋ฅํ ํ ์ค์ผ ์ ์์ ๊ฒ์ด๋ค. ๋๋๋ฆด ์ ์๋ ๊ฒฐ์ ์ ์ค์ฌ์ผ ํ๋ ๊น๋ญ์ ์ฐ๋ฆฌ๊ฐ ํ๋ก์ ํธ ์ด๊ธฐ์ ๋ ์ต์ ์ ๊ฒฐ์ ์ ๋ด๋ฆฌ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ฐ๋ฆฌ๊ฐ ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ๋ ์๋๋ ์๊ตฌ ์ฌํญ, ์ฌ์ฉ์, ํ๋์จ์ด์ ๋ณํ๋ฅผ ์์ง๋ฅผ ์ ์๋ค.
๊ฒฐ์ ์ด ๋ฐ๋์ง ์์ ๊ฒ์ด๋ผ ๊ฐ์ ํ๊ณ ์ ๋ฐ์ํ์ง๋ ๋ชจ๋ฅผ ์ฐ์ฐํ ์ฌ๊ฑด์ ๋๋นํ์ง ์๋ ๋ฐ์์ ์ค์๊ฐ ๋์จ๋ค. ๊ฒฐ์ ์ด ๋์ ์๊ฒจ์ง ๊ฒ์ด ์๋๋ผ ๋ฐ๋ท๊ฐ์ ๋ชจ๋ ์์ ์ฐ์ธ ๊ธ์จ๋ผ ์๊ฐํ๋ผ. ์ธ์ ๋ ์ง ํฐ ํ๋๊ฐ ๊ธ์จ๋ฅผ ์ง์๋ฒ๋ฆด ์ ์๋ค.
Tip 18. ์ต์ข ๊ฒฐ์ ์ด๋ ์๋ค.
๐ฅ ์ ์ฐํ ์ํคํ ์ฒโ
์ฌ๋ฌ๋ถ์ด ํ ์ ์๋ ๊ฒ์ ๋ฐ๊พธ๊ธฐ ์ฝ๊ฒ ๋ง๋๋ ๊ฒ์ด๋ค. ์ธ๋ถ์ API๋ฅผ ์ฌ๋ฌ๋ถ์ด ๋ง๋ ์ถ์ํ ๊ณ์ธต ๋ค๋ก ์จ๊ฒจ๋ผ. ์ฌ๋ฌ๋ถ์ ์ฝ๋๋ฅผ ์ฌ๋ฌ ์ปดํฌ๋ํธ๋ก ์ชผ๊ฐ๋ผ. ๊ฒฐ๊ตญ์๋ ํ๋์ ๊ฑฐ๋ํ ์๋ฒ์ ๋ฐฐํฌํ๊ฒ ๋๋๋ผ๋, ์ด ๋ฐฉ์์ ๊ฑฐ๋ํ ๋จ์ผ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ์ ธ๋ค ์ชผ๊ฐ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ์ฝ๋ค.
Tip 19. ์ ํ์ ์ข์ง ๋ง๋ผ.
๋๊ตฌ๋ ์ด๋ค ๋ฏธ๋๊ฐ ํผ์ณ์ง์ง ์ ์ ์์ผ๋ฉฐ, ์ฐ๋ฆฌ ๋ถ์ผ๋ ํนํ ๋ ๊ทธ๋ ๋ค. ์ฌ๋ฌ๋ถ์ ์ฝ๋๊ฐ ๋กํฐ๋กค์ ํ ์ ์๊ฒ ํ๋ผ. ๋ฝ์ ํ ์๋ ์๊ณ , ํ์ํ ๋กค์ ํ ์ ์๊ฒ ํ๋ ๊ฒ์ด๋ค.
๐ญ Topic 12. ์๊ดํโ
์ฌ์ฉ์๋ค์ด ์ด์ ์ ๊ทธ๋ฐ ์์คํ ์ ํ ๋ฒ๋ ๋ณธ ์ ์ด ์๊ธฐ ๋๋ฌธ์ ์๊ตฌ ์ฌํญ์ ๋ง์ฐํ ์ง๋ ๋ชจ๋ฅธ๋ค. ์ต์ํ์ง ์์ ์๊ณ ๋ฆฌ์ฆ, ๊ธฐ์ , ์ธ์ด, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ๋ ํ๋ฏ๋ก, ์ฌ๋ฌ๋ถ์ ์๋ง์ ๋ฏธ์ง์ ๊ฒ๊ณผ ๋ง๋ฅํธ๋ฆฌ๊ฒ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋ก์ ํธ๋ ์์ฑํ๋ ๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ํ๋ก์ ํธ๊ฐ ๋๋๊ธฐ ์ ์ ์ฌ๋ฌ๋ถ์ ์์ ์ ๋๋ฌ์ผ ํ๊ฒฝ์ด ๋ณํ๋ฆฌ๋ผ๋ ๊ฒ๋ ๊ฑฐ์ ์ฅ๋ดํ ์ ์๋ค.
์ด๋ฐ ์ํฉ์์์ ์ ํ์ ์ธ ๋ฐ์์ ์์คํ ์ ๊ทน๋๋ก ์ธ์ธํ ๋ช ์ธํํ๋ ๊ฒ์ด๋ค. ๋ชจ๋ ๋ถํ์คํ ์ ์ ์ก์๋งค๊ณ , ํ๊ฒฝ ์กฐ๊ฑด์ ์ ์ฝํ๊ณ , ๋ชจ๋ ์๊ตฌ ์ฌํ์ ์ผ์ผ์ด ํญ๋ชฉ์ผ๋ก ๋ง๋ค์ด์ ๋ช ์์๋ ๋๋ ๋ช ์ธ์๋ฅผ ๋ง๋ ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ชฉํ๋ฌผ์ ์์น๋ฅผ ์ถ์ธกํด์ ์ด์ ์๋ค. ์๋นํ ์์ ๊ณ์ฐ์ ์ฐ์ ํ๊ณ ๋์, ๊ทธ๋ค์์ ๋ฐ์ธํ๊ณ , ๋ง๊ธฐ๋ฅผ ๋น๋ ๊ฒ์ด๋ค.
๐ฅ ์ด๋ ์์์ ๋น์ ๋ด๋ ์ฝ๋โ
์ฐ๋ฆฌ๋ฅผ ์๊ตฌ ์ฌํญ์ผ๋ก๋ถํฐ ์ต์ข
์์คํ
์ ์ผ๋ถ ์ธก๋ฉด๊น์ง ๋นจ๋ฆฌ, ๋์ ๋ณด์ด๊ฒ, ๋ฐ๋ณต์ ์ผ๋ก ๋๋ฌํ๊ฒ ํด ์ค ๋ฌด์ธ๊ฐ๋ฅผ ์ฐพ์์ผ ํ๋ค.
์์คํ
์ ์ ์ํ๋ ์ค์ํ ์๊ตฌ ์ฌํญ์ ์ฐพ์๋ผ. ์๋ฌธ์ด ๋๋ ๋ถ๋ถ์ด๋ ๊ฐ์ฅ ์ํ์ด ์ปค ๋ณด์ด๋ ๊ณณ์ ์ฐพ์๋ผ. ์ด๋ฐ ๋ถ๋ถ์ ์ฝ๋๋ฅผ ๊ฐ์ฅ ๋จผ์ ์์ฑํ๋๋ก ๊ฐ๋ฐ ์ฐ์ ์์๋ฅผ ์ ํ๋ผ.
Tip 20. ๋ชฉํ๋ฌผ์ ์ฐพ๊ธฐ ์ํด ์๊ดํ์ ์จ๋ผ.
์๊ดํ ๊ฐ๋ฐ ๋ฐฉ๋ฒ์ "ํ๋ก์ ํธ๋ ๊ฒฐ์ฝ ๋๋์ง ์๋๋ค."๋ ๊ฒฌํด์๋ ์ผ๋งฅ์ํตํ๋ค. ๋ณ๊ฒฝ ์์ฒญ๊ณผ ๊ธฐ๋ฅ ์ถ๊ฐ ์์ฒญ์ ์ธ์ ๋ ๊ณ์ ๋ค์ด์ค๊ธฐ ๋ง๋ จ์ด๋ค. ์๊ดํ ๊ฐ๋ฐ ๋ฐฉ๋ฒ์ ์ ์ง์ ์ธ ์ ๊ทผ ๋ฐฉ๋ฒ์ด๋ค.
์ด์ ๋๋น๋๋ ์ ํ์ ์ธ ๋ฐฉ๋ฒ์ ์ผ์ข ์ ๊ฑฐ๋ ๊ณตํ์ ์ ๊ทผ ๋ฐฉ์์ด๋ค. ์ฝ๋๋ ๋ชจ๋๋ก ๋๋๊ณ , ๊ฐ ๋ชจ๋์ ๊ฒฉ๋ฆฌ๋ ์ํ์์ ์์ฑ๋๋ค. ๋ชจ๋์ ์กฐ๋ฆฝํด์ ์์คํ ์ ํ์ ๋ถํ๋ค์ ๋ง๋ค๊ณ , ํ์ ๋ถํ๋ค์ ๋ค์ ์กฐ๋ฆฝํด์ ์ธ์ ๊ฐ ๋ง์นจ๋ด ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ฑ๋๋ค. ์ด๋๊ฐ ๋์์ผ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๊ฑฐ๋ ํ ์คํธํ ์ ์๋ค.
์๊ดํ ์ฝ๋ ์ ๊ทผ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ์ฅ์ ์ด ์๋ค.
- ์ฌ์ฉ์๊ฐ ๋ญ๊ฐ ์๋ํ๋ ๊ฒ์ ์ผ์ฐ๋ถํฐ ๋ณด๊ฒ ๋๋ค.
- ๊ฐ๋ฐ์๊ฐ ๋ค์ด๊ฐ์ ์ผํ ์ ์๋ ๊ตฌ์กฐ๋ฅผ ์ป๋๋ค.
- ํตํฉ(integration) ์์ ์ ์ํํ ๊ธฐ๋ฐ์ด ์๊ธด๋ค.
- ๋ณด์ฌ์ค ๊ฒ์ด ์๊ธด๋ค.
- ์งํ ์ํฉ์ ๋ํด ๋ ์ ํํ๊ฒ ๊ฐ์ ์ก์ ์ ์๋ค.
๐ฅ ์๊ดํ์ด ์ธ์ ๋ ๋ชฉํ๋ฌผ์ ๋งํ๋ ๊ฒ์ ์๋๋คโ
์๊ดํ ์ฝ๋ ๊ธฐ๋ฒ์ ์ผ์ด ์ด๋ป๊ฒ ๋ ์ง 100% ํ ์ ํ ์ ์๋ ์ํฉ์์ ์ฌ์ฉ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ฒ์ ๋ช ๋ฒ ์๋ ๋ ๋ชฉํ์ ๋ง์ง ์๋๋ผ๋ ๋๋ ํ์๊ฐ ์๋ค. ์ง๊ธ ์๋ ๊ฒ์ ๋ชฉํ๋ฌผ์ ๋ ๊ฐ๊น์์ง๋๋ก ๋ฐ๊ฟ๋ผ. ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฒผ์ด ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก ์ ์ ํํ๋ค๋ ์ฌ์ค์ ๊ฐ์ฌํ๋ผ. ์ฝ๋์ ํฌ๊ธฐ๊ฐ ์์ผ๋ฉด ๊ด์ฑ ์ญ์ ์ฝํ๋ฏ๋ก ๋น ๋ฅด๊ณ ์ฝ๊ฒ ๋ฐ๊ฟ ์ ์๋ค. ๋น ๋ฅด๊ณ ์ ๋ ดํ๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํด ๋ฐ์์ ๋ชจ์์ ์๋กญ๊ณ ๋ ์ ํํ ๋ฒ์ ์ ๋ง๋ค ์ ์์ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ์ฃผ์ ์์๊ฐ ์๊ดํ ์ฝ๋์๋ ๋ค์ด ์๊ธฐ ๋๋ฌธ์, ์ฌ์ฉ์๋ ์ง๊ธ ๋ณด๊ณ ์๋ ๊ฒ์ด ๋จ์ง ์ข ์ด์ ์ฐ์ธ ๋ช ์ธ๊ฐ ์๋๋ผ ํ์ค์ ๊ธฐ๋ฐ์ ๋๊ณ ์๋ค๋ ํ์ ์ ์ป์ ์ ์๋ค.
๐ญ Topic 13. ํ๋กํ ํ์ ๊ณผ ํฌ์คํธ์โ
๋ค์ํ ์ฐ์ ๋ถ์ผ์์ ๊ตฌ์ฒด์ ์ธ ์์ด๋์ด๋ฅผ ์คํํด ๋ณด๊ธฐ ์ํด ํ๋กํ ํ์ ์ ์ด์ฉํ๋ค. ํ๋กํ ํ์ ์ ์ค์ ์ ํ๋ณด๋ค ํจ์ฌ ์ ๋ ดํ๊ฒ ๋ง๋ค ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ํํธ์จ์ด ํ๋กํ ํ์ ๋ ์ํ ์์๋ฅผ ๋ถ์ํ๊ณ ๋ ธ์ถ์ํจ ํ, ์ด๋ฅผ ๋งค์ฐ ์ ๋ ดํ ๋น์ฉ์ผ๋ก ๋ฐ๋ก์ก์ ๊ธฐํ๋ฅผ ์ป๋ ๊ฒ์ด๋ค. ์๋์ฐจ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ ํ๋กํ ํ์ ์ ๋ง๋ค ๋๋ง๋ค ํ๋ก์ ํธ์ ํน์ ์ธก๋ฉด์ ์ค์ ์ ๋ ์ ์๋ค.
ํ๋กํ ํ์ ์ ๋ฐ๋์ ์ฝ๋๋ก ์์ฑํด์ผ ํ๋ค๊ณ ์๊ฐํ๊ธฐ ์ฌ์ด๋ฐ ๊ผญ ๊ทธ๋ด ํ์๋ ์๋ค. ํฌ์คํธ์์ ์์ ํ๋ฆ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง๊ณผ ๊ฐ์ด ๋์ ์ธ ๊ฒ์ ํ๋กํ ํ์ดํํ ์ ์๋ ํ๋ฅญํ ๋๊ตฌ๋ค. ์ฌ์ฉ์ ์ธํฐํ์ด์ค ํ๋กํ ํ์ ์ ํ์ดํธ๋ณด๋์ ๊ทธ๋ฆผ์ ๊ทธ๋ ค์ ๋ง๋ค ์๋ ์๊ณ , ๊ทธ๋ฆผํ ํ๋ก ๊ทธ๋จ, ์ธํฐํ์ด์ค ๋น๋ ๋ฑ์ ์ด์ฉํด ๊ธฐ๋ฅ์ ๊ตฌํํ์ง ์๊ณ ๋ง๋ค์ด ๋ณผ ์๋ ์๋ค.
ํ๋กํ ํ์ ์ ์ ํ๋ ๋ช ๊ฐ์ง ์ง๋ฌธ์ ๋ตํ๊ธฐ ์ํ ๊ฒ์ด๋ฏ๋ก ์ค์ ์ ํ๋ณด๋ค ํจ์ฌ ์ ์ ๋น์ฉ์ผ๋ก ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ ์ ์๋ค. ์ฌ๋ฌ๋ถ์๊ฒ ๋น์ฅ ์ค์ํ์ง ์๋ ์ธ๋ถ ์ฌํญ์ด๋ผ๋ฉด ์ถํ์ ์ฌ์ฉ์์๊ฒ ๋งค์ฐ ์ค์ํด์ง์ง๋ ๋ชจ๋ฅด์ง๋ง ์ผ๋จ ๋ฌด์ํ๋ฉด์ ์ฝ๋ฉํ ์ ์๋ค. ํ์ง๋ง ์ธ๋ถ ์ฌํญ์ ํฌ๊ธฐํ ์ ์๋ ํ๊ฒฝ์ ์ฒํด ์๋ค๋ฉด ์ง์ง๋ก ํํ ํ ํ์ ์ ๋ง๋ค๊ณ ์๋ ๊ฒ ๋ง๋์ง ์๋ฌธํด ๋ณด๋ผ. ์๋ง๋ ์ด๋ฐ ๊ฒฝ์ฐ์๋ ์๊ดํ ๋ฐฉ์์ ๊ฐ๋ฐ์ด ๋ ์ ์ ํ ๊ฒ์ด๋ค.
๐ฅ ํ๋กํ ํ์ดํ ๋์โ
ํ๋กํ ํ์ดํ์ผ๋ก ์กฐ์ฌํ ๋์์ ๋ฌด์์ธ๊ฐ? ์ํ์ ์๋ฐํ๋ ๋ชจ๋ ๊ฒ์ด๋ค. ์ด์ ์ ํด ๋ณธ ์ ์ด ์๋ ๊ฒ, ์ต์ข ์์คํ ์ ๋งค์ฐ ์ค์ํ ๊ฒ์ด ํ๋กํ ํ์ดํ ๋์์ด๋ค. ์ฆ๋ช ๋์ง ์์๊ฑฐ๋, ์คํ์ ์ด๊ฑฐ๋, ์์ฌ์ด ๊ฐ๋ ๊ฒ, ๋ง์์ด ํธํ์ง ์์ ๊ฒ ๋ชจ๋๊ฐ ํ๋กํ ํ์ดํ์ ๋์์ด ๋ ์ ์๋ค.
- ์ํคํ ์ฒ
- ๊ธฐ์กด ์์คํ ์ ์ถ๊ฐํ ์๋ก์ด ๊ธฐ๋ฅ
- ์ธ๋ถ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ ํน์ ๋ด์ฉ
- ์ธ๋ถ์์ ๊ฐ์ ธ์จ ๋๊ตฌ๋ ์ปดํฌ๋ํธ
- ์ฑ๋ฅ ๋ฌธ์
- ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์ค๊ณ
ํ๋กํ ํ์ดํ์ ํ์ด ๊ฒฝํ์ด๋ค. ํ๋กํ ํ์ดํ์ ๊ฐ์น๋ ์์ฐํ ์ฝ๋์ ์๋ ๊ฒ์ด ์๋๋ผ ์ด๋ฅผ ํตํด ๋ฐฐ์ฐ๋ ๊ตํ์ ์๋ค. ์ด๊ฒ์ด ํ๋กํ ํ์ดํ์ ์ ์ ํ ํต์ฌ์ด๋ค.
Tip 21. ํ๋กํ ํ์ดํ์ผ๋ก ํ์ตํ๋ผ.
๐ฅ ํ๋กํ ํ์ ์ ์ด๋ป๊ฒ ์ฌ์ฉํ ๊ฒ์ธ๊ฐ?โ
ํ๋กํ ํ์ ์ ๋ง๋ค ๋ ๋ฌด์ํด๋ ์ข์ ์ธ๋ถ ์ฌํญ์ ๋ฌด์์ธ๊ฐ?
- ์ ํ์ฑ
- ์ ์ ํ ๊ฐ์ง ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- ์์ ์ฑ(completeness)
- ํ๋กํ ํ์ ์ ์ ํ๋ ๋ฐฉ์์ผ๋ก๋ง ์๋ํ๊ธฐ๋ ํ๋ค. ์ด์ฉ๋ฉด ๋ฏธ๋ฆฌ ์ ์ ํ ์ ๋ ฅ ๋ฐ์ดํฐ ํ๋์ ํ ๊ฐ์ง ๋ฉ๋ด ํญ๋ชฉ๋ง ์๋ํด๋ ๋ ๊ฒ์ด๋ค.
- ์์ ์ฑ
- ์ค๋ฅ ๊ฒ์ฌ๋ฅผ ๋นผ๋จน๊ฑฐ๋ ์์ ๋ฌด์ํ ์๋ ์๋ค.
- ์คํ์ผ
- ํ๋กํ ํ์ ์ฝ๋์๋ ์ฃผ์์ด๋ ๋ฌธ์๊ฐ ๋ง์ง ์์์ผ ํ๋ค. ๋ค๋ง, ํ๋กํ ํ์ ์ ์ฌ์ฉํด ๋ณธ ๊ฒฐ๊ณผ๋ฅผ ๋ฌธ์๋ก ๋ง์ด ์์ฑํ ์๋ ์๋ค.
ํ๋กํ ํ์ ์ ์ธ๋ถ ์ฌํญ์ ์๋ตํ๊ณ ์์คํ ์ ํน์ ์ธก๋ฉด์ ์ด์ ์ ๋ง์ถ๊ธฐ ๋๋ฌธ์ ํ์ด์ฌ์ด๋ ๋ฃจ๋น ๊ฐ์ ๊ณ ์์ค ์คํฌ๋ฆฝํธ ์ธ์ด๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํํ ์๋ ์๋ค. ์ฌ์ฉ์ ์ธํฐํ์ด์ค ํ๋กํ ํ์ ์ ๋ง๋ค ๋๋ ์ธ์๊ณผ ์ํธ ์์ฉ์๋ง ์ง์คํ ์ ์๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ผ.
๐ฅ ์ํคํ ์ฒ ํ๋กํ ํ์ดํโ
์๊ดํ๊ณผ๋ ๋ฌ๋ฆฌ ํ๋กํ ํ์
์์คํ
์ ๋ชจ๋์ด ๊ผญ ๊ธฐ๋ฅ์ ๊ฐ์ ธ์ผ ํ๋ ๊ฒ์ ์๋๋ค. ์ฌ์ค ์ํคํ
์ฒ๋ฅผ ํ๋กํ ํ์ดํํ ๋๋ ์ฝ๋๋ฅผ ์์ฑํ์ง ์๊ณ ํ์ดํธ๋ณด๋, ํฌ์คํธ์, ์ธ๋ฑ ์ค์นด๋ ๋ฑ์ ์ฌ์ฉํด๋ ๋๋ค.
ํ๋กํ ํ์ดํ์ ๋ชฉ์ ์ ์ ์ฒด์ ์ผ๋ก ์์คํ
์ด ์ด๋ป๊ฒ ๋์ํ ์ง์ ๋ํด ๊ฐ์ ์ก๋ ๊ฒ์ด๋ค. ๋ค์ ๋งํ์ง๋ง, ์ธ๋ถ ์ฌํญ์ ๋ฌด์ํ๋ค.
๐ฅ ํ๋กํ ํ์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ง ์๋๋ก ํ๋ ค๋ฉด?โ
ํ๋กํ ํ์ ์ ์ฝ๋๋ก ๋ง๋ค ๋๋ ์์ํ๊ธฐ ์ ์ ํญ์ ๋ชจ๋ ์ฌ๋์๊ฒ ์ฌ๋ฌ๋ถ์ด ํ๊ธฐ ์ฒ๋ถํ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์๋ค๋ ์ฌ์ค์ ์ดํด์์ผ์ผ ํ๋ค. ํ๋กํ ํ์ ์ ๊ทธ๊ฒ์ด ํ๋กํ ํ์ ์์ ๋ชจ๋ฅด๋ ์ฌ๋์๊ฒ๋ ์คํด๋ฅผ ์ด ์ ๋๋ก ๋งค๋ ฅ์ ์ผ ์๋ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ฝ๋๋ ํ๊ธฐํ ๊ฒ์ด๊ณ , ๋ถ์์ ํ๋ฉฐ, ์์ฑํ ์ ์๋ค๋ ์ฌ์ค์ ๋ถ๋ช ํ ์ฃผ์ง์์ผ์ผ ํ๋ค.
๋ง์ฝ ์ฌ๋ฌ๋ถ์ด ์์ ํ๋ ํ๊ฒฝ์ด๋ ๋ฌธํ์์ ํ๋กํ ํ์ ์ฝ๋์ ๋ชฉ์ ์ด ์๋ชป ํด์๋ ๊ฐ๋ฅ์ฑ์ด ํฌ๋ค๊ณ ๋๋๋ค๋ฉด ์๊ดํ ์ ๊ทผ ๋ฐฉ์์ ์ทจํ๋ ํธ์ด ๋์ ๊ฒ์ด๋ค. ํ๋กํ ํ์ ์ ์ ์ ํ ์ฌ์ฉํ๋ฉด ๋ง์ ์๊ฐ๊ณผ ๋, ๊ณ ํต๊ณผ ๊ณ ์์ ์ค์ผ ์ ์๋ค. ๊ฐ๋ฐ ์ฃผ๊ธฐ ์ด๊ธฐ์ ์ ์ฌ์ ๋ฌธ์ ์ง์ ์ ๋ฐ๊ฒฌํ๊ณ ๊ณ ์น ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ค์๋ฅผ ์ ์ ๋น์ฉ์ผ๋ก ์์ฝ๊ฒ ๊ณ ์น ์ ์๋ ์๊ธฐ์ ๋ง์ด๋ค.
๐ญ Topic 14. ๋๋ฉ์ธ ์ธ์ดโ
๋ฌธ์ ๋๋ฉ์ธ์ ์ธ์ด๊ฐ ์ด๋ค ํ๋ก๊ทธ๋๋ฐ ํด๊ฒฐ ๋ฐฉ์์ ์ ์ํ๊ธฐ๋ ํ๋๋ฐ, ์ฐ๋ฆฌ ์๊ฐ์๋ ์ด๊ฒ์ด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ฌ๊ณ ๋ฐฉ์๋ณด๋ค ๋ ์ค์ํ๋ค.
์ฐ๋ฆฌ๋ ์ธ์ ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋๋ฉ์ธ์ ์ดํ๋ฅผ ์ฌ์ฉํด์ ์ฝ๋๋ฅผ ์์ฑํ๋ ค๊ณ ๋ ธ๋ ฅํ๋ค. ์ค์ฉ์ฃผ์ ํ๋ก๊ทธ๋๋จธ๋ผ๋ฉด ์ด๋ค ๊ฒฝ์ฐ์๋ ํ ์ฐจ์ ๋ ๋์๊ฐ์ ๊ทธ ๋๋ฉ์ธ์ ์ค์ ์ดํ์ ๋ฌธ๋ฒ, ์๋ฏธ๋ก ์ - ์ฆ, ๊ทธ ๋๋ฉ์ธ์ ์ธ์ด๋ฅผ - ์ฌ์ฉํด์ ํ๋ก๊ทธ๋๋ฐ ํ ์๋ ์๋ค.
Tip 22. ๋ฌธ์ ๋๋ฉ์ธ์ ๊ฐ๊น๊ฒ ํ๋ก๊ทธ๋๋ฐํ๋ผ.
๐ฅ ์ค์ธ๊ณ ๋๋ฉ์ธ ์ธ์ด์ ์โ
์ค์ ๋ก ์ด ์ผ์ ํด๋ธ ์ฌ๋ก๋ฅผ ๋ช ๊ฐ์ง ์ดํด๋ณด์
RSpecโ
RSpec์ ๋ฃจ๋น์ฉ ํ ์คํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ๋๋ค์ ํ๋ ์ธ์ด์ ๋น์ทํ ํ ์คํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค๋๋ก ์๊ฐ์ ์ฃผ์๋ค. RSpec์ ์ฌ๋ฌ๋ถ์ด ์ฝ๋์์ ๊ธฐ๋(expect)ํ๋ ๋์์ ํ ์คํธ์ ํํํ๋๋ก ๋ง๋ค์ด์ก๋ค.
describe BowlingScore do
it "3์ ์ ๋ค ๋ฒ ์ป์ผ๋ฉด ์ด์ ์ 12์ " do
score = BowlingScore.new
4.times { score.add_pins(3) }
expect(score.total).to eq(12)
end
end
ํ์ปด๋ฒโ
ํ์ปด๋ฒ๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ข ์๋์ง ์์ ํ ์คํธ๋ฅผ ์ ์ํ ์ ์๋ค. ์ ์ํ ํ ์คํธ๋ ์ฌ๋ฌ๋ถ์ด ์ฌ์ฉํ๋ ์ธ์ด์ ๋ง๋ ํ์ปด๋ฒ ๋ฒ์ ์ ์ฌ์ฉํ์ฌ ์คํ์ํฌ ์ ์๋ค.
๊ธฐ๋ฅ: ์ ์ ๊ณ์ฐ
๋ฐฐ๊ฒฝ:
์กฐ๊ฑด ๋น ์ ์ํ
์๋๋ฆฌ์ค: ๋ณผ๋ง์์ 3์ ์ ์ฌ๋ฌ ๋ฒ ๊ธฐ๋กํ๊ธฐ
์กฐ๊ฑด 3์ ์ ๋์ ํ๋ค
๊ทธ๋ฆฌ๊ณ 3์ ์ ๋์ ํ๋ค
๊ทธ๋ฆฌ๊ณ 3์ ์ ๋์ ํ๋ค
๊ทธ๋ฆฌ๊ณ 3์ ์ ๋์ ํ๋ค
๊ทธ๋ฆฌ๊ณ ์ด์ ์ 12์ ์ด๋ค
๐ฅ ๋ด๋ถ์ ์ธ๋ถ ์ธ์ด์ ์ฅ๋จ์ โ
์ผ๋ฐ์ ์ผ๋ก ๋ด๋ถ ๋๋ฉ์ธ ์ธ์ด๋ ํธ์คํธ ์ธ์ด์ ๊ธฐ๋ฅ์ ์ธ ์ ์๋ ์ฅ์ ์ด ์๋ค. ์ฌ๋ฌ๋ถ์ด ๋ง๋๋ ๋๋ฉ์ธ ์ธ์ด๋ฅผ ๊ณต์ง๋ก ๋ ๊ฐ๋ ฅํ๊ฒ ๋ง๋ค ์ ์๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด, ๋ฃจ๋น ์ฝ๋๋ฅผ ์ฌ์ฉํด์ ์๋์ผ๋ก RSpec ํ ์คํธ๋ฅผ ๋ง์ด ์์ฑํ ์ ์๋ค. ๋ค์ ์ฝ๋๋ ๋ณผ๋ง์์ ์คํ์ด๋ ์คํธ๋ผ์ดํฌ๊ฐ ์๋ ๊ฒฝ์ฐ๋ฅผ ํ ์คํธํ๋ค.
describe BowlingScore do
(0..4).each do |pins|
(1..20).each do |throws|
target = pins * throws
it "#{pins}์ ์ #{throws}๋ฒ ์ป์ผ๋ฉด ์ด์ ์ #{target}์ " do
score = BowlingScore.new
throws.times { score.add_pins(pins) }
expect(score.total).to.eq(target)
end
end
end
end
๋ด๋ถ ๋๋ฉ์ธ ์ธ์ด์ ๋จ์ ์ ํธ์คํธ ์ธ์ด์ ๋ฌธ๋ฒ๊ณผ ์๋ฏธ๋ก ์ ๋ฐ๋ผ์ผ๋ง ํ๋ค๋ ๊ฒ์ด๋ค. ์ด๋ฐ ๋ถ๋ถ์ด ๋๋ผ์ธ ์ ๋๋ก ์ ์ฐํ ์ธ์ด๋ ์๊ธด ํ์ง๋ง ๊ทธ๋๋ ์ฌ์ ํ ์ํ๋ ์ธ์ด์ ๊ตฌํํ ์ ์๋ ์ธ์ด ์ฌ์ด์์ ์ด๋ ์ ๋ ํํํด์ผ๋ง ํ๋ค.
๊ถ๊ทน์ ์ผ๋ก๋ ์ด๋ค ํํ๋ก ๋ง๋ค๋๋ผ๋ ํธ์คํธ ์ธ์ด์ ๋ฌธ๋ฒ์ ๋ฒ์ด๋ ์ ์๋ค.
์ธ๋ถ ์ธ์ด๋ ์ด๋ฐ ์ ์ฝ์ด ์๋ค. ์ฌ๋ฌ๋ถ์ด ์ ์ํ๋ ค๋ ์ธ์ด์ ํ์๋ฅผ ๋ง๋ค๊ธฐ๋ง ํ๋ฉด ๋๋ค.
์ฐ๋ฆฌ์ ์ ์์ ๊ฝค ๊ฐ๋จํ๋ค. ์ ์ฝํ๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ์๊ฐ์ ์์ง๋ ๋ง๋ผ. ๋๋ฉ์ธ ์ธ์ด๋ฅผ ๋ง๋ค๋ ค๋ฉด ํ๋ก์ ํธ์ ์ด๋ ์ ๋ ์ถ๊ฐ ๋น์ฉ์ด ๋ฐ์ํ๋ค. ๊ทธ๋ผ์๋ ์ด๋ฅผ ์์ํ ๋งํผ ๋น์ฉ์ ์ ๊ฐํ ์ ์์ผ๋ฆฌ๋ผ๋ ํ์ ์ด ์์ด์ผ ํ๋ค. ์๋ง ๊ธธ๊ฒ ๋ณด๊ณ ๋ฐ์ ธ์ผ ํ ๊ฒ์ด๋ค.
๐ฅ ์์ฝ๊ฒ ๋ง๋๋ ๋ด๋ถ ๋๋ฉ์ธ ์ธ์ดโ
๋ง์ง๋ง์ผ๋ก, ํธ์คํธ ์ธ์ด์ ๋ฌธ๋ฒ์ด ๋ ธ์ถ๋์ด๋ ์๊ด์๋ค๋ฉด ์ฌ์ฉํ ์ ์๋ ํธ๋ฒ์ด ์๋ค. ๋ฉํํ๋ก๊ทธ๋๋ฐ์ ๋จ๋ฐํ๋ ๋์ ๊ทธ๋ฅ ํจ์๋ฅผ ์จ์ ๊ตฌํํ๋ผ. ์ฌ์ค RSpec๋ ๊ทธ๋ฐ ๋ฐฉ์์ ์ด๋ค.
describe BowlingScore do
it "3์ ๋ฏ ๋ค ๋ฒ ์ป์ผ๋ฉด ์ด์ ์ 12์ " do
score = BowlingScore.new
4.times { score.add_pins(3) }
expect(score.total).to eq(12)
end
end