1. ์ค๋ณต๋๋ ์ฝ๋๋ฅผ ์ปดํฌ๋ํธ ํ ํด๋ฒ๋ฆฌ๋ ์ด์
**์ปดํฌ๋ํธ ํ ๋?
์ค๋ณต๋๋ ์ฝ๋๋ฅผ ํ๋์ ์ปดํฌ๋ํธ(ํจ์)๋ก ๋ง๋๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ปดํฌ๋ํธ ํ ์ํค๋ ์ด์ ๋,
์ฒซ ๋ฒ์งธ ์ ์ฒด ์ฝ๋์ ์ฝ๋์์ด ์ค์ด๋ ๋ค.
์ฌ๋ฌ ์ค ์ง๋ฆฌ ์ฝ๋๋ ํจ์ ํ๋๋ฅผ ํธ์ถํ์ฌ ๊ทธ ์์ ์ธ์๋ฅผ ์ง์ด๋ฃ๋ ๋ฐฉ์์ผ๋ก ํํํ๋ฉด ์ฝ๋ ์์ด ํจ์ฌ ์ค์ด ๊ฐ๋ ์ฑ์ด ์ข์์ง๋ค.
ํด๋น return ๋ด๋ถ์ ํ์ํ ๋ชจ๋ ์ฝ๋๋ค์ ์ปดํฌ๋ํธ ํธ์ถ์ ํตํด ํํํ๋ค. ์ปดํฌ๋ํธ ํธ์ถ 6๋ฒ์ผ๋ก return ๋ฌธ ๋ด๋ถ๋ฅผ ํ์ํ ๊ฒ์ ์ ๋ถ ํํํ๋๋ฐ, ๋ง์ฝ ์ฝ๋๋ก ์ ์ฌํญ์ ์ ๋ถ ๋ค ํํํ๋ค๋ฉด, ์คํฌ๋กค๋ฐ๋ฅผ ํ์ฐธ ๋ด๋ ธ์ด์ผ ํ ๊ฒ์ด๋ค.
๋ ๋ฒ์งธ, ์ ์ง๋ณด์๊ฐ ์ฉ์ดํ๋ค.
A๋ ์ฝ๋๊ฐ 5๋ฒ ์ค๋ณต๋๋ค๊ณ ํ์. ๋ง์ฝ 2๋ฒ์งธ 4๋ฒ์งธ A์ฝ๋์์ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๋ฉด ์ฐ๋ฆฌ๋ ๊ทธ ์ฝ๋๋ค์ ์ฐพ์์ ์ผ์ผํ ๊ณ ์ณ์ค์ผ ํ๋ค. ์ด๋ ์์ฃผ ๊ฐ๋จํ ์์ ์ด๋ผ๋ ์ ์ง ๋ณด์์ ์๋นํ ์๊ฐ์ด ๋ ๋ค.
๋ฐ๋ช A๋ ์ฝ๋๋ฅผ ์ปดํฌ๋ํธํ ์ํค๊ณ , ํ์ํ 5๊ณณ์ ํธ์ถํ์ฌ ์ผ๋ค๋ฉด, ๋๋ A ์ฝ๋๊ฐ ๋ด๊ธด ์ปดํฌ๋ํธ ํ๋๋ง ์์ ํ๋ฉด ๋๋ค.
2. ํ์ง๋ง ๋๋ฌด ์ฆ์ ์ปดํฌ๋ํธํ๋ ์์์น ๋ชปํ ๋ณ๊ฒฝ์ ์ด ์๊ฒจ ๋ฒ๊ทธ๋ก ์ด์ด์ง๋ค.
์ค๋ณต์ด ์ผ๋ง ๋์ง๋ ์์ ์ฝ๋๋ค ๊น์ง ๋ชจ๋ ์ปดํฌ๋ํธํ ์ํค๋ฉด ์ด๋ค ์ผ์ด ๋ฐ์ํ ๊น?
์๋ฅผ ๋ค์ด ๋ฒํผ์ ๋๋ฅผ ๋๋ง๋ค ํ์๊ฐ ์นด์ดํธ ๋๋ ์ฝ๋๋ฅผ ์ปดํฌ๋ํธํ ์์ผฐ๋ค๊ณ ๊ฐ์ ํด๋ณด์. ํด๋น ์ฝ๋๋ A์ B ๋ผ๋ ์ฅ์ ๋ ๊ณณ์์๋ง ์ฐ์ธ๋ค.
๊ทผ๋ฐ B๋ผ๋ ์ฅ์์๋ ๋ฒํผ์ ๋๋ฅธ ํ์๊ฐ 50๋ฒ์ด ๋์์ ๋, ๊ฒฝ๊ณ ์๊ณผ ๊ฒฝ๊ณ ๋ฌธ์ด ๋จ๋ ์ฝ๋๋ ์ถ๊ฐํด์ผ ํ๋ค๊ณ ๊ฐ์ ํด๋ณด์.
๋ง์ฝ ์ปดํฌ๋ํธํ ์ํค์ง ์์๋ค๋ฉด, B๋ผ๋ ์ฅ์์์ ์ฝ๋๋ฅผ ๊ณ ์น๋ฉด ๋์๋๋ฐ, ์ปดํฌ๋ํธํ ์์ผฐ์์ผ๋ก, ์ปดํฌ๋ํธ์ ์๋ก์ด ์ฝ๋๋ฅผ ์ถ๊ฐํ๊ณ ๋ณด๋ด์ค ์๋ก์ด ์ธ์๋ ๋ช ์ธ ํด์ผํ๋ค.
์ด๋ฌ๊ณ ํ๋ก๊ทธ๋จ์ ๋๋ฆฌ๋ฉด A ์ฅ์์์๋ Bug๊ฐ ๋ ์ ์๋ค. ์๋ํ๋ฉด property๋ก ๋ฐ์์ผํ ์ธ์๊ฐ ๋์์์๋ A๋ผ๋ ์ฅ์๋ก๋ถํฐ ์จ ์ธ์๋ ๊ทธ๋๋ก ์ด๊ธฐ ๋๋ฌธ์ด๋ค. B๋ฅผ ๊ณ ์น๋ ๋ฐ๋์ A๋ ์์ ์์ ์ด ํ์ํ๋ค...
๋ง์ฝ ๋ฒํผ ๋๋ฅผ ์ ํ์ ์นด์ดํธ ์ปดํฌ๋ํธ๋ฅผ C๋ D๋ผ๋ ์ฅ์์์ ์ฐ๋๋ฐ, ์ฌ๊ธฐ๋ 50๋ฒ ๋๊ฒจ๋ ๊ฒฝ๊ณ ๋ฌธ์ ๋์ธ ํ์๊ฐ ์์ ๊ฒฝ์ฐ, ์๋๋ ๊ทธ๋ฅ ๋ฒํผ ์นด์ดํธ ์ฝ๋๋ง ์์ฑํ๋ฉด ๋๋๋ฐ, ๊ฒฝ๊ณ ์, ๊ฒฝ๊ณ ๋ฌธ ๋์ฐ์ง ๋ง๋๋ก ํ๋ ์์ ์ ๋ ํด์ค์ผ ํ๋ค!
์ด๋ ๋ฒ๊ฑฐ๋ก์ธ ๋ฟ๋ง ์๋๋ผ ๋ฒ๊ทธ ์ ๋ฐ์ ๋ง์ด ํ๋ค.
3. AtomicDesignPattern์ ๋ํด
AtomicDesignPattern์ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ค.
๊ฐ์ฅ ์์ ๋จ์์ ์ปดํฌ๋ํธ๋ค์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋๊ณ , ์๋์ ์ผ๋ก ํฐ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค ์, ์์ ์ปดํฌ๋ํธ๋ค์ ์กฐํฉํ์ฌ ๋ง๋ ๋ค.
๋ ์ฐ๋ฆฌ๊ฐ ์กฐํฉํ์ฌ ๋ง๋ ์ปดํฌ๋ํธ๋ณด๋ค ํฐ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ ๋ค๋ฉด, ์ง๊ธ๊น์ง ๋ง๋ค์๋ ์ปดํฌ๋ํธ๋ค์ ์กฐํฉํ์ฌ ๋ง๋ค๊ณ ,
์ด๋ฌํ ๊ณผ์ ์ ๋ฐ๋ณตํ์ฌ ํ๋์ ํฐ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ๋ฐฉ์์ AtomicDesignPattern์ด๋ผ๊ณ ํ๋ค.
์ด๋ ๋ง๋ค์ด์ง ์ปดํฌ๋ํธ์ ํฌ๊ธฐ ๋ณ๋ก ๊ณ์ธต์ด ์กด์ฌํ๋ค.
Atomic : ๋ ์ด์ ์ชผ๊ฐค ์ ์๋ ๋์์ธ์ ์ต์ ๋จ์๋ฅผ ๋งํ๋ค. (์์ icon ํ๋ ํ๋)
Molecules: Atomic๋ค์ ๋ชจ์์ ๋ง๋ค์ด์ง๊ณ , ์ต์ ํ ๊ฐ์ง์ ๊ธฐ๋ฅ์ ์ํํ ์ ์๋ ๋จ์๋ฅผ ๋งํ๋ค.
Organisms: Molecules๋ Atomic์ด ์กฐํฉ๋์ด ๋ง๋ค์ด์ง๊ณ , ์ฌ์ฉ์์๊ฒ ์๋ฏธ๋ฅผ ์ ๋ฌํ๊ฑฐ๋ ์ญํ ์ ๋ถ์ฌํ ์ ์๋ ๋จ์๋ฅผ ๋งํ๋ค.
Template: Organism๋ค์ด ์กฐํฉ๋์ด ๋ง๋ค์ด์ง๊ณ , data๊ฐ ์ฐ๊ฒฐ๋์ง ์์ ์ต์ข ๋ ์ด์์์ ์๋ฏธํ๋ค.
Page: Template์ data๊ฐ ์ฐ๊ฒฐ๋ ํํ๋ฅผ ๋ปํ๋ฉฐ, ์ฌ์ฉ์์๊ฒ ์ต์ข ์ ์ผ๋ก ์ ๋ฌ๋๋ ๊ฒ์ด๋ค.
https://yozm.wishket.com/magazine/detail/1531/
** ๊ทธ๋ ๋ค๋ฉด ์ธ์ ์ผ๋ง๋ ์ปดํฌ๋ํธ ํ๋ฅผ ํ๋๊ฒ ์ ์ ํ ๊น?
์ด๊ฑด ์ฌ๋๋ง๋ค ๊ธฐ์ค์ด ๋ค๋ฅด์ง๋ง, molecule ์ด์ ๋จ์์ ์ฝ๋๊ฐ 3ํ ์ด์ ๋ฐ๋ณต๋ ์ ์ปดํฌ๋ํธํ ์ํค๋ ๊ฒ์ด ์ ์ ํ ๊ฒ ๊ฐ๋ค.
4. Dumb Component์ Smart Component์ ๋ํด
Dumb Component๋ ์ฌ์ฉ์์๊ฒ ๋ฌด์ธ๊ฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ผ ์ธ์๋ ์๋ฌด๋ฐ ๊ธฐ๋ฅ์ ํ์ง ์๋ ์ปดํฌ๋ํธ๋ฅผ ๋งํ๋ค.
๋ง์ฝ App์ ์ด๋ค ํค๋๋ฅผ ๋๋ ๋๋ฐ ์๋ฌด ๋ฐ์์ด ์๋ค๋ฉด, ํด๋น ํค๋๋ ์ง๊ธ์ด ์ด๋ค ํ์ด์ง์ธ์ง ๋งํด์ฃผ๊ธฐ๋ง ํ๋ Dumb Component์ด๋ค.
smart Component๋ ์ฌ์ฉ์์ ๋์์ ๋ฐ๋ผ ์ํ๋ฅผ ๊ฐ์ง๊ณ ๋ณํ๋ ์ปดํฌ๋ํธ๋ฅผ ์๋ฏธํ๋ค.
์๊น์ ์์์์ App์ ํค๋๋ฅผ ๋๋ ๋๋ฐ, ๋ค๋ฅธ ํ์ด์ง๋ก ๊ฐ ์ ์๋ ๋ฉ๋ด๊ฐ ๋ฐ์ ํ์๋๋ค๋ฉด, ํด๋น ํค๋๋ ์ง๊ธ ์ฌ์ฉ์๊ฐ ์ด๋ค ํ์ด์ง์ ์๋์ง๋ฅผ ๋ํ๋ด์ค ๋ฟ๋ง ์๋๋ผ, ์ฌ์ฉ์์ ํด๋ฆญ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ํ๋ฅผ ๊ฐ์ง๋ Smart Component์ด๋ค.