211p ~ 232p
์์ฝ
๐
์ถ์ํ ๋ฒฝ: ํจํด ๋ฆฌ๋ทฐ
- ์ถ์ํ ๋ฒฝ์ผ๋ก ์ถ์ํ ๋ฒฝ ์๋ ์๋ ์ฝ๋์ ์์ ์๋ ์ฝ๋์ ์์กด์ฑ์ ์์จ ์ ์๋ค.
- ์ถ์ํ ๋ฒฝ์ ์ฌ์ฉํ๋ฉด ์ฝ๋๋ฅผ ์ฝ๊ฒ ๊ณ ์น ์ ์๋ค. ๋จ, ์ฝ๋๋ฅผ ์ฝ๊ฒ ๊ณ ์น๊ธฐ ์ํด ์ถ์ํ ๋ฒฝ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๋ผ, ํ ๊ฐ ์ปค๋ฎค๋์ผ์ด์
๋น์ฉ์ ์ค์ด๊ณ ๋ณต์กํ ์ฝ๋๋ฅผ ๋ช
ํํ๊ฒ ํ๊ธฐ ์ํ์ฌ ์ฌ์ฉํด์ผ ํ๋ค.
๐
์์ ์ธํฐํ์ด์ค (minimal interface)
- ํ ๊ณ์ธต ์์ ํจ์๋ค์ด ์ ๊ณ , ์์ ํ๊ณ , ์ ๋ฐ๋์ง ์๋๋ก ์ ์งํ๋ ํจํด์ด๋ค.
- ๋๋๋ก ์์ ๊ณ์ธต์์ ์ฝ๋๋ฅผ ์ถ๊ฐํ๊ฑฐ๋/๊ณ ์น๊ฑฐ๋, ์์ ๊ณ์ธต์์ ํจ์๋ฅผ ํธ์ถํ์.
- ์์ ๊ณ์ธต์ ์ด๋ค ํจ์๋ฅผ ๋ง๋ค ๋, ๊ฐ๋ฅํ ํ์ฌ ๊ณ์ธต์ ์๋ ํจ์๋ก ๊ตฌํํ๋ ๊ฒ์ด ์์ ์ธํฐํ์ด์ค๋ฅผ ์ค์ฒํ๋ ๋ฐฉ๋ฒ.
- ์์ ์ธํฐํ์ด์ค ํจํด์ ์ฌ์ฉํ๋ฉด ๊นจ๋ํ๊ณ , ๋จ์ํ๊ณ , ๋ฏฟ์ ์ ์๋ ์ธํฐํ์ด์ค์ ์ง์คํ ์ ์๋ค.
๐
์์ ์ธํฐํ์ด์ค: ํจํด ๋ฆฌ๋ทฐ
- ์ถ์ํ ๋ฒฝ์ ๋ง๋ ํจ์๋ '์ธํฐํ์ด์ค' ๋ผ๊ณ ๋ณผ ์ ์๋ค. -> ์ถ์ํ ๋ฒฝ์ ์๊ฒ ๋ง๋ค์. (์ฌ์ค ๋ชจ๋ ๊ณ์ธต์ ์ ์ฉ ๊ฐ๋ฅ)
- ์ถ์ํ ๋ฒฝ์ ์ฝ๋๊ฐ ๋ง์ ์๋ก, ๊ตฌํ์ด ๋ณ๊ฒฝ๋ ๋ ๊ณ ์ณ์ผ ํ ๊ฒ์ด ๋ง๋ค.
- ๋ณ๊ฒฝ์ด ์ด๋ ค์ ์ง๋ฏ๋ก, ์ปค๋ฎค๋์ผ์ด์
๋น์ฉ์ด ๋ง์์ง๋ค.
- ๋ฎ์ ์์ค์ ์ฝ๋๊ฐ ๋ง์ ๋ฒ๊ทธ๊ฐ ์๊ธฐ๊ธฐ ์ฝ๊ณ , ์ดํดํ๊ธฐ๋ ์ด๋ ต๋ค.
- ๋ค์ ์ด์์ ์ธ ๋ชจ์ต. ํธ์ถ ๊ทธ๋ํ ํ์ ๊ณ์ธต์ '์๊ณ ๊ฐ๋ ฅํ' ๋์์ ๋ง๋ค์์ ๋๋ง ๊ฐ๋ฅํ๋ค.
๐
ํธ๋ฆฌํ ๊ณ์ธต
- ์ค์ฉ์ ์ธ ์ ๊ทผ. ์ถ์ํ๋, ์ปค๋ค๋ ๊ณ์ธต ๋ง๋ค๊ธฐ๋ ์ด๋ ต๊ณ ํ๋ค๋ค. ์๊ฐ๋ ๋ง์ด ๋ ๋ค.
- ์ง๊ธ ์์
ํ๋ ์ฝ๋๊ฐ ํธ๋ฆฌํ๋ค๋ฉด, ์ค๊ณ๋ ์กฐ๊ธ ๋ฉ์ถฐ๋ ์ข๋ค.
- ๋จ, ๊ตฌ์ฒด์ ์ธ ๊ฒ์ ๋๋ฌด ๋ง์ด ์์์ผ ํ๋ค๊ฑฐ๋ ์ฝ๋๊ฐ ์ง์ ๋ถํ๋ค๊ณ ๋๊ปด์ง๋ค๋ฉด ๋ค์ ํจํด์ ์ ์ฉํ์.
- ์ด๋ค ์ฝ๋๋ผ๋ ํญ์
์ค๊ณ (๊ฐ๋ฐ์๋ก์์ ํ์์ฑ) - ์๋ก์ด ๊ธฐ๋ฅ (๋น์ฆ๋์ค ์๊ตฌ์ฌํญ)
์ฌ์ด ์ด๋ ์ง์ ์ ๋จธ๋ฌผ๊ฒ ๋จ.
๐
ํธ์ถ ๊ทธ๋ํ ํ์ฉ
- ๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ : ์ํํธ์จ์ด๊ฐ literally ํด์ผํ๋ ๊ธฐ๋ฅ. e.g. ์ธ๊ธ ๊ณ์ฐ์ ํ๋ฉด ์ฌ๋ฐ๋ฅธ ๊ณ์ฐ ๊ฒฐ๊ณผ๊ฐ ๋์์ผ.
- ๋น๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ
- ์ ์ง๋ณด์์ฑ (maintainability) : ์๊ตฌ์ฌํญ์ด ๋ฐ๋์์ ๋ ๊ฐ์ฅ ์ฝ๊ฒ ๊ณ ์น ์ ์๋ ์ฝ๋๋ ์ด๋ค ์ฝ๋์ธ๊ฐ
- ํ
์คํธ์ฑ (testability) : ์ด๋ค ๊ฒ์ ํ
์คํธํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์ํ๊ฐ
- ์ฌ์ฌ์ฉ์ฑ (reusability) : ์ด๋ค ํจ์๊ฐ ์ฌ์ฌ์ฉํ๊ธฐ ์ข์๊ฐ
(์๋์ ์๋ ํจ์: ๋ฎ์ ๊ณ์ธต์ ํจ์ / ์์ ์๋ ํจ์: ๋์ ๊ณ์ธต์ ํจ์)
- ์ ์ง๋ณด์์ฑ
- ๊ฐ์ฅ ์์ ์๋ ํจ์๊ฐ ๊ฐ์ฅ ๊ณ ์น๊ธฐ ์ฝ๋ค.
- ์๋์ ์๋ ์ฝ๋์ผ์๋ก ๊ณ ์น๊ธฐ ์ด๋ ต๋ค. ๊ทธ ์ฝ๋ ์์ ๋ง๋ ์ฝ๋๊ฐ ๋๋ฌด ๋ง๊ธฐ ๋๋ฌธ์ด๋ค.
- ํต์ฌ : ์์ฃผ ๋ฐ๋๋ ์ฝ๋๋ ๊ฐ๋ฅํ ์์ชฝ์ ์์ด์ผ ํ๋ค.
- ํ
์คํธ์ฑ
- ์๋์ ์๋ ์ฝ๋๋ฅผ ํ
์คํธํ๋ ๊ฒ์ด ์ค์ํ๋ค.
- ๋ง์ฐฌ๊ฐ์ง๋ก, ๋ง์ ์ฝ๋๊ฐ ๊ฐ์ฅ ์๋์์ ์ ๋์ํ๋ ์ฝ๋์ ์์กดํ๊ธฐ ๋๋ฌธ์ด๋ค.
- ๋๋ถ์ด, ์์ ์๋ ์ฝ๋์ผ์๋ก ์์ฃผ ๋ฐ๋๊ธฐ ๋๋ฌธ์ ํ
์คํธ๊ฐ ์ค๋๊ฐ์ง ๋ชปํ๋ค.
- ํต์ฌ : ์๋์ชฝ์ ์๋ ํจ์๋ฅผ ํ
์คํธํ๋ ๊ฒ์ด ๋ ๊ฐ์น์๋ค.
- ์ฌ์ฌ์ฉ์ฑ
- ์๋์ ์๋ ์ฝ๋๊ฐ ์ฌ์ฌ์ฉํ๊ธฐ ๋ ์ข๋ค.
- ์๋์ ์๋ ์ฝ๋์ผ์๋ก, ๋ค๋ฅธ ํจ์๋ฅผ ๋ ํธ์ถํ๋ค. -> ํน์ ๊ฒฝ์ฐ๊ฐ ์กฐํฉ๋ ๊ฒฝ์ฐ์ ๋ํ ํจ์์ผ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์์ผ๋ก ์ฌ์ฌ์ฉ์ฑ์ด ์ข๋ค.
- ํต์ฌ : ๋ฎ์ ์์ค์ ๋จ๊ณ๋ก ํจ์๋ฅผ ๋นผ๋ด๋ฉด ์ฌ์ฌ์ฉ์ฑ์ด ๋ ๋์์ง๋ค.
๋ฐ์ท
์ฝ๋ ์ค ์๋ ์ค์ํ์ง ์์ต๋๋ค. ์ค์ํ ๊ฒ์ ์ฝ๋๊ฐ ์ ์ ํ ๊ตฌ์ฒดํ ์์ค๊ณผ ์ผ๋ฐํ๊ฐ ๋์ด ์๋์ง์
๋๋ค.
๊ณ์ธตํ ์ค๊ณ๋ ๋ฐ๋ก ์๋ ๊ณ์ธต์ ์๋ ํจ์๋ก, ํ์ฌ ๊ณ์ธต์ ํจ์๋ฅผ ๊ตฌํํด ์ฝ๋๋ฅผ ๊ตฌ์ฑํ๋ ๊ธฐ์ ์
๋๋ค.
๋ฉ๋ชจ
๊ณ์ธต, ๊ณ์ธต, ๊ณ์ธต.
'ํธ๋ฆฌํ ๊ณ์ธต' ํจํด์ด ๊ฐ์ฅ ์๋ฟ์๋ค. ์ด๋ก ์ ์ด์, ์
๋ฌด๋ ํ์ค.