๋ฆฌํฉํ ๋ง์ ๋ํด ๊ต์ฅํ '๊ณ ์ ์ ์ธ' ์ง์์ ๊ฐ์ง ์ฌ๋๋ค์ด ์๋ ๊ฒ ๊ฐ์์ ์ ์ ํด์ฃผ๊ธฐ ์ํด ๊ธ์.
ํ๋ก๊ทธ๋๋จธ ๊ต์ ๋ฐ์ด๋ธ ์ค ํ๋์ธ '์ค์ฉ์ฃผ์ ํ๋ก๊ทธ๋๋จธ'์ ๋ด์ฉ์ ์ธ์ฉํจ
๋ฆฌํฉํ ๋ง์ด๋ ๋ฌด์์ผ๊น?
๊ณผ๊ฑฐ์ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๊ฑด์ถ์ ๋น๋์ด '์ํํธ์จ์ด ๊ฑด์ถ(Sofrware Costruction)'์ด๋ผ๊ณ ํํํ๋ค.
1. ๊ฑด๋ฌผ์ ์ค๊ณ๋๋ฅผ ๊ทธ๋ฆฐ๋ค.
2. ๊ฑด๋ฌผ์ ์ง๋๋ค.
3. ์์ฑ ํ ํ์๊ฐ ์์ผ๋ฉด ๊ณ ์น๋ค.
ํ์ง๋ง ์ํํธ์จ์ด๋ ์ด๋ฐ ์์ผ๋ก ๋์๊ฐ์ง ์๋๋ค.
์ํํธ์จ์ด๋ '์ ์ ์ผ'์ ๊ฐ๊น๋ค. ์ด๊ธฐ ๊ณํ๊ณผ ์กฐ๊ฑด์ ๋ฐ๋ผ์ ์ฌ๋ฌ ๊ฐ์ง ์๋ฌผ์ ์ฌ๊ณ , ๋ช๋ช์ ์ ์๋ผ๊ณ , ๋ช๋ช์ ํด๋น๊ฐ ๋๋ฉฐ, ๋น๊ณผ ๊ทธ๋ฆผ์, ๋ฐ๋๊ณผ ๋น์ ์ํธ ์์ฉ์ ๋ฐ๋ผ๋ผ ์๋ฌผ์ ์์น๋ฅผ ์ฎ๊ธฐ๊ธฐ๋ ํ๋ค.
์ฝ๋๋ฅผ ๋ค์ ์์ฑํ๊ธฐ, ๋ค์ ์์
ํ๊ธฐ, ๋ค์ ์ค๊ณํ๊ธฐ๋ฅผ ์ด๊ดํด์ '๋ฆฌํฉํ ๋ง'์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋ฆฌํฉํ ๋ง์ ์ธ์ ํด์ผํ ๊น?
1. ์ฝ๋์ ๋ฌธ์ ๊ฐ ์์ด์ ์ฅ์ ๋ฌผ์ ๋ถ๋ช์ณค์ ๋
2. ์ด๋ค ๊ฒ์ด ์๋ชป๋๋ค๊ณ '์๊ฐ'๋ ๋
์ด๋๊ฐ ๋ฆฌํฉํ ๋ง์ ํ ์ต์ ๊ธฐ๋ค. ๋ฆฌํฉํ ๋ง ํ๋ ๊ฒ์ ์ฃผ์ ํ๋ฉด ์๋๋ค.
๋ฆฌํฉํ ๋ง ํ๋ ๊ฒ์ ๊ต์ฅํ ๊ณ ํต์ค๋ฌ์ด ์์
์ด๋ค. ๊ตด๋ฌ๊ฐ๋ ์ฝ๋์ธ๋ฐ ๊ทธ ์ฝ๋๋ฅผ ์ฐ์ฐ์กฐ๊ฐ๋ด์ ์๋ก ์ง์ผํ๋ ์ฃผ์ ํ ์ ๋ฐ์ ์๋ค.
ํ์ค๋ก์์ ๋ฆฌํฉํ ๋ง์ ๋ํด "๋ค ๋ง๋ค๊ณ ํ๋ฉด ๋์ง", "์ง๊ธ์ ์๊ฐ์ด ์์ด"๋ผ๊ณ ํ๊ณ๋ฅผ ๋๋ ํ๋ก๊ทธ๋๋จธ๋ค์ด ์๋๋ฃฉํ๋ค.
์ด๋ ๋งค์ฐ ์ค๋๋ ฅ์ด ์๋ ๋ง๋ก, ์ฝ๋๊ฐ 10์ค ์ผ ๋ ๋ฆฌํฉํ ๋ง ํ๋๊ฒ ์ฝ๋๊ฐ 100์ค์ผ ๋๋ณด๋ค ์ฝ๊ณ , ์ฝ๋ 100์ค ์ผ ๋ ๋ฆฌํฉํ ๋ง ํ๋๊ฒ ์ฝ๋1000์ค ์ผ ๋๋ณด๋ค ์ฝ๋ค.
๋ฆฌํฉํ ๋ง์ด ํ์ํ ์ฝ๋๋ ์ผ์ข
์ '์ข
์'์ด๋ค. ์์ง ์์ ๋๋ ์ฝ๊ฒ ์ ๊ฑฐํ ์ ์์ง๋ง, ์๊ฐ์ด ์ง๋ ์ข
์์ด ๋ค๋ฅธ ๊ณณ์ผ๋ก ์ ์ดํ๊ธฐ ์์ํ๋ฉด ์ข
์์ ์ ๊ฑฐํ๋ ๋น์ฉ(=์๊ฐ)๊ณผ ์ํ(=๊ตฌ์กฐ์ ๋ง๊ฐ์ง)์ด ํจ์ฌ ์ปค์ง๋ค.
ํญ์ ๋ฆฌํฉํ ๋งํด์ผ ํ ๊ฒ๋ค์ ๋ช
๋จ์ ๋ง๋ค๊ณ , ๋น์ฅ ๋ฆฌํฉํ ๋งํ๊ธฐ ํ๋ค๋ค๋ฉด ์ผ์ ์ ๋ฆฌํฉํ ๋งํ ์๊ฐ์ ๋ฐ๋์ ํฌํจ์์ผ '์ข
์'์ ์ ๊ฑฐํด์ผํ๋ค.
์ ์์ผ ๋ฐฉ๋ฒ๋ก
๊ฐค์ ๋ณด๋ฉด "์ค๊ณ๋ฅผ ๋ฏธ๋ฆฌ ์น ํด๋๊ณ ๋ค ๋ง๋ค๊ณ ๋์ ๋ฆฌํฉํ ๋ง์ ํด์ผ์ง ๋ญ ์ค์๊ฐ์ผ๋ก ํด?"๋ผ๊ณ ๋งํ๋ ์ฌ๋๋ค ํน์ ๊ทธ๋ ๊ฒ ์๊ฐํ๋ ์ฌ๋๋ค์ด ์๋ค.
UniRx๋ฅผ ์ค๋ช
ํ ๊ธ์์๋ ์ด ๋ง์ด์ง๋ง ๊ธฐ์ ์ ์๋ ๊ฑธ๋ก ํ๋จํ์ง๋ง๊ณ ์ต๊ทผ ์ ๋ณด๋ก ํ๋จํด๋ผ.
์ง๊ธ์ 90๋
๋๋ 00๋
๋ ์ด๋ฐ์ด ์๋๋ค.
๊ณผ๊ฑฐ ์ํฐํด ๋ฐฉ์์ผ๋ก ๊ฐ๋ฐํ ๋๋ ๋ถ๋ช
๋ช ๋ฌ์ ๊ฑธ์ณ์ ์ธ๋ถ์ ์ผ๋ก ์ค๊ณํ ๋ค ๊ฐ๋ฐ์ ๋ค์ด๊ฐ๋ ์ผ์ด ํํ๋ค.
ํ์ง๋ง ๊ฐ๋ฐ์๋ค์ ์ด ๋ฐฉ์์ด ์๋ชป๋๋ค๋๊ฑธ ์ค๋ ๊ฑธ๋ฆฌ์ง ์์ ๊นจ๋ฌ์๋ค.
์๋ํ๋ฉด ๊ฒ์ ๊ธฐํ์ ์์๋ก ๋ณํ๋ฉฐ, ๋ณํ ๊ธฐํ์ ๋ง์ถฐ ๋ช ๋ฌ์ ๊ฑธ์ณ ์ค๊ณํ ์ค๊ณ๋๋ฅผ ์์ ํ๋๋ฐ ์์ฒญ๋ ์๊ฐ์ด ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด์ ๊ฐ๋ฐ์๋ค์ ๋ฐ ๋น ๋ฅธ ๋์ฒ๋ฅผ ์ํด์ ๊ฐ๋ฐ์ ์ ์์ผ ๋ฐฉ๋ฒ๋ก ์ ์ ์ฉ์ํจ๋ค.
์ ์์ผ ๋ฐฉ๋ฒ๋ก ์ ์ ์ฉํ ํ๋ก๊ทธ๋๋ฐ์ '์ค๊ณ->๊ฐ๋ฐ->ํ
์คํธ'๋ฅผ ํ '์คํ๋ฆฐํธ'๋ก ๋๊ณ 1~4์ฃผ์ ์งง์ ์ฃผ๊ธฐ์ ์คํ๋ฆฐํธ๋ฅผ ๋ฐ๋ณตํด๊ฐ๋ฉฐ ์ค๊ณ๋ฅผ ์์ฑํด๊ฐ๋ค.
๊ทธ๋ฆฌ๊ณ ์คํ๋ฆฐํธ ๊ณผ์ ์์ ๋ฆฌํฉํ ๋ง์ ๊ฐ์ด ์งํํ๋ค. ํํํ ๋ฆฌํฉํ ๋ง์ ํ๋ ๊ฒ์ด๋ค.
์ด์ ๋ ์์์ ์ค๋ช
ํ๋ฏ '์ข
์'์ ์ด๊ธฐ์ ์ ๊ฑฐํ๋๊ฒ ๊ฐ์ฅ 'ํจ์จ์ '์ด๊ธฐ ๋๋ฌธ์ด๋ค.
๋ช๋ช์ด ์๊ธฐํ๋ '์ค๊ณ๋๋ก ๋ค ๊ตฌํํ ๋ค ๋ฆฌํฉํ ๋ง'์ ์ด๋ฏธ ํ์ฐธ ์๋ ์ ์คํจ๋ผ๊ณ ๊ฒ์ฆ๋ ์ฌ์ค์ด๊ณ , 20๋
์ค๋ฐ์ด ๋ ์ง๊ธ๊น์ง๋ ๊ทธ๊ฒ ์ข๋ค๊ณ ์๊ณ ์๋ ์ฌ๋์ด ์๋ค๋ ๊ฒ์ ์ฐธ ์ฌํ ์ผ์ด๊ธฐ๋ ํ๋ค.
์ฐธ๊ณ ๋ก ์์ ์ 3N์ ๋ฉด์ ์ง๋ฌธ ์ค ๋จ๊ณจ๋ก ๋์จ ์ง๋ฌธ์ด๊ธฐ๋ ํ๋ค.
"์ํฐํด ๋ฐฉ์์ ๋ฌธ์ ์ ๊ณผ ์ ์์ผ ๋ฐฉ์์ ๋ํด ์ค๋ช
ํด๋ด"
๊ณ ๋ก ์ฝ๋๊ฐ ๋ญ๊ฐ ์๋ชป๋๋ค๊ณ ์๊ฐ์ด ๋ค๋ฉด ์ ๊ทน์ ์ผ๋ก ์์ ํ์. ๋
์ข์ ๊ธ ๊ฐ์ฌํฉ๋๋ค. ํ๋ถ์ ๋๋ ์ ์์ผ ๋ณด๋ฉด์ ์ ์ดํด๊ฐ ์๊ฐ๋๋ฐ ์๋ฟ๋๊ฒ ๊ฐ์. ์ด๋ ๊ฒ ๋ฆฌํฉํ ๋ง์ ๋ฐ๋ณตํ๋ ค๋ฉด ๊ฒฐ๊ตญ ๋จ์ผ์ฑ ์์์น์ฒ๋ผ ํ ํด๋์ค๊ฐ ๋๋ฌด ๋ง์ ์ผ์ ํ๋ ๊ฒ์ ํผํด์ผ ํ๋ ๊ฑฐ๊ฒ ์ฃ ?
SOLID๋ ์ข์ ๊ตฌ์กฐ๋ฅผ ์ง๊ธฐ ์ํ ๊ท์น์ด๊ธฐ ๋๋ฌธ์ ๋น์ฐํ ๋ฌด์กฐ๊ฑด ์งํฅํด์ผํ๊ณ , ์คํ๋ฆฐํธ ๋์์ ํ๋์ ํด๋์ค๊ฐ ๋ ์๋ ์์ง๋ง, ํ ํด๋์ค๊ฐ ๊ฐ์ง ๋ช ๊ฐ๊ฐ Function์ด ๋ ์๋ ์์ผ๋ฏ๋ก SOLID ์์ฒด๋์ ํฐ ์๊ด์ด ์์. ๊ท์น์ ๋ ๋์ '๋ง์์ ์๋ค๋ฉด ์ฃผ์ ๋ง๊ณ ์๋ก ๋ง๋ค์ด, ๊ทธ๊ฒ ์ ์ผ ๋น ๋ฅธ ๊ธธ์ด์ผ'๋ฅผ ์ค์ฒํ๋ฉด ๋จ.
'๊ณ ๋์์ง์ผ๋ก ์ธ์ ๊ฐ์ํ๊น?'
๊ณ ๋ ์์ง์ผ๋ก ๊ฐ์ํ์ผ๋ ๊น? - ๊ฐค์ ๊ณ ๋ ๋ฌด์ง์ฑ ์ ๋ด์๋ค์ด ๋ง์์ ๊ธ์.
"LรVE๋ก ์ธ์ ๊ฐ์ํ๊น?"
์ข ์์ ๋น๋ ํํ๋ ๋๋ฌด ์ข๊ณ , ์ ๋ง ์ ์ตํ ๊ธ์ด๋ค! ๊ฐ์ฌ๊ฐ์ฌ.
RIDER ๋ง Refactor๋ง ์ ์จ๋
์ผ๋ถ ์ฝ๋ = ์ข ์ ๋ง์์ ๋๋ ๋ฌธ์ฅ์ด๊ตฐ์. ํ์ง๋ง ์ ์ค์ค๋ก๊ฐ ์ข ์์ ๋ฐ์์ง๋ผ๋ฉด? ใทใทใท