ํ๊ตฌ์ ์ฌ๊ฑด์ ๋ฐํ์ผ๋ก ํ ์คํ.
๋ชจ๋ ์ฐ์ฐ์ ์ฐ์ฐ์ด ์๋๋๋ค.
๋ชจ๋ ๋๋ด์ ์ฌ๋ฏธ๊ฐ ์์ต๋๋ค.
โ ์ธ๋ฅด๊ฒ์ด, ์๋
ํ์ธ์. ๋ด ์ด๋ฆ์ Bibi์ด๊ณ , ๋ด ๋๋ฃ๋ Bob์ด๊ณ ์ฐ๋ฆฌ๋ ๋ ๋ช
์
๋๋ค... ํ ๋ฆฌ๋์
๋๋ค. ์ฐ๋ฆฌ๋ ๋งค์ฐ ์ค๋ซ๋์ ํ๋ก์ ํธ์ ์ฐธ์ฌํด ์์ผ๋ฉฐ ๋ชจ๋ ํด์ผ ํ ์ผ์ ์๊ธฐํ๊ณ ์์ผ๋ฉฐ ์ค๋์ ๊ทํ์ ์ง์๊ณผ ๊ธฐ์ ์ ๋ํด ์ํตํ๊ฒ ์ต๋๋ค.
๊ทํ์ ์ด๋ ฅ์์ ๋ฐ๋ฅด๋ฉด ๊ทํ๋ ์ฃผ๋ก .NET์ผ๋ก ์์
ํ๊ณ , ๋น๋๊ธฐ ๋ฐ ๋ค์ค ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ์ ์ดํดํ๊ณ , ์๊ณ ๋ฆฌ์ฆ ๋ฐ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๊ธฐ๋ณธ ์ฌํญ์ ์์ ์๊ฒ ์๋ฌํ๊ณ , ๋๊ท๋ชจ ๋ชจ๋์ ์ฒ์๋ถํฐ ๋ฆฌํฉํ ๋งํ๊ณ ์ค๊ณํ ๊ฒฝํ์ด ์๋ ๊ณ ํ๋
์
๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์ด ์ด๋ฆฌ์์ ์ง๋ฌธ์ ํ์ง ์์ ์ ์์ต๋๋ค. ์์ ์ ๋ํด ๊ฐ๋ตํ๊ฒ ๋ง์ํด ์ฃผ์๊ฒ ์ต๋๊น?
โ ์๋
ํ์ธ์, ๋น๋น์ ๋ณด๋ฐ. ์ ๋ ์ฃผ๋ก .NET์ผ๋ก ์์
ํ๊ณ , ๋น๋๊ธฐ ๋ฐ ๋ค์ค ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ์ ์ดํดํ๊ณ , ์๊ณ ๋ฆฌ์ฆ ๋ฐ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๊ธฐ๋ณธ์ ๋ํ ์์ ๊ฐ ์๋ ๋ช
๋ น์ ๊ฐ๊ณ ์์ผ๋ฉฐ, ๋๊ท๋ชจ ๋ชจ๋์ ์ฒ์๋ถํฐ ๋ฆฌํฉํฐ๋งํ๊ณ ์ค๊ณํ ๊ฒฝํ์ด ์์ต๋๋ค. ๊ฐ๋จํ ๋งํด์ ๊ทธ๊ฒ ์ ๋ถ์
๋๋ค.
- ๊ฐ์ฌํฉ๋๋ค. ์, ์์ํฉ์๋ค! ์๋ฐ์
์ ์ํด ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ด๋ค ๋๋ฌด๋ฅผ ์๊ณ ์๊ณ ๊ทธ ๋๋ฌด๋ฅผ ํผํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์
๋๊น?
- ์ฐธ๋๋ฌด, ์์นด์์, ๋จํ๋๋ฌด, ์ฒด๋ฆฌ... ๊ทธ๋์ ๋น์ฅ ๋ค๋ฅธ ๊ฒ์ ๋ ์ค๋ฅด์ง ์์ต๋๋ค. ํธ๋ฆฌ ํ์์ ๊ฒฝ์ฐ ์ผ์ชฝ์ด๋ ์ค๋ฅธ์ชฝ ๋ฑ ๋ค์ํ ์ธก๋ฉด์์ ํธ๋ฆฌ๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ๋๋ ๋ํ ๋๋ฌด์ ์ค๋ฅผ ์ ์๋ค๋ ๊ฒ๊ณผ ๋ค๋์ฅ๊ฐ ๊ฐ๋ ์ฌ๋ ๋๋ฌด์ ๊ตฌ๋ฉ์ด ์๋ค๋ ๊ฒ๋ ์๊ณ ์์ต๋๋ค.
- ๊ด์ฐฎ์. ๊ทธ๋ ๋ค๋ฉด ์ง๋ฌธ์ - ์ฐธ์กฐ๋ก ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ๋ ๊ฒ๊ณผ ๊ฐ์ฒด๋ฅผ ์์ ํ ๋ณต์ฌํ๋ ๊ฒ์ ์ฐจ์ด์ ์ ๋ฌด์์
๋๊น?
โ ์ฐจ์ด์ ์ ์ฒซ ๋ฒ์งธ ๊ฒฝ์ฐ์๋ ๊ฐ์ฒด๊ฐ ์ฐธ์กฐ๋ก ์ ๋ฌ๋๊ณ ๋ ๋ฒ์งธ ๊ฒฝ์ฐ์๋ ์์ ํ ๋ณต์ฌ๋๋ค๋ ์ ์
๋๋ค.
โ๊ทธ๋ํ์ ๋ํด ๋ฌด์์ ์๊ณ ์๋์?
โ ์ ๋ Lev Nikolaevich Tolstoy ๋ฐฑ์์ ์ํ์ ๊น์ด ์กด๊ฒฝํ๋ฉฐ ์ด๋ ธ์ ๋ "๋ชฌํ
ํฌ๋ฆฌ์คํ ๋ฐฑ์"์ด๋ผ๋ ์ฑ
์ ์ฝ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ผํ๋ผ ๋ฐฑ์์ ๋๊ฐ ๋ชจ๋ฅด๋์?!
โ "SOLID"๋ ๋ฌด์์
๋๊น?
- "๋จ๋จํจ", ๋ ์์ฃผ - "๋จ๋จํจ". ๋ฌผ๋ก ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค.
โ ๊ฐ๋น์ง ์์ง๊ธฐ๋ ์ด๋ป๊ฒ ์๋ํ๋์?
- ๋๋ ์์์. ์ ํ์ ์ธ ์ฐ๋ ๊ธฐ ์์ง๊ฐ๋ ๋ฐ์ ์ฃผํฉ์ ์์
๋ณต๊ณผ ์์ ํ๋ฅผ ์ ์ต๋๋ค. ๊ทธ๋ ์ฃผ๋ก ๋ฐค์ ์ฐ๋ ๊ธฐ ์๊ฑฐ์ฐจ์์ ์ผํฉ๋๋ค. ์ฐ๋ ๊ธฐ ์์ง๊ฐ์ ์ฃผ์ ์๋ฌด๋ ๋์๋๋ ์ฐ๋ ๊ธฐ๊ฐ ๋๋ก์ ์์์ง์ง ์๋๋ก ์ฃผ์ํ๋ฉด์ ์ฐ๋ ๊ธฐํต์ ๋ด์ฉ๋ฌผ์ ์ฐ๋ ๊ธฐ ํธ๋ญ ๋ค์ชฝ์ผ๋ก ์ฎ๊ธฐ๋ ๊ฒ์
๋๋ค. ์์ฝํ๋ฉด, ์ฐ๋ฆฌ ์ฌํ์์๋ ์ฐ๋ ๊ธฐ ์๊ฑฐ์ธ์ ์ค์์ฑ์ด ๊ณผ์ํ๊ฐ๋๊ณ ์์ง๋ง ๊ทธ๋ค์ ์ผ์ ๊ต์ฌ๋ ๋นต ๊ตฝ๋ ์ฌ๋์ ์ผ๋งํผ ๊ฐ์น๊ฐ ์๋ค๊ณ ๋งํ ์ ์์ต๋๋ค!
โ ๊ทธ๋ฆฌ๊ณ ์ค๋์ ๋ง์ง๋ง ์ด๋ฆฌ์์ ์ง๋ฌธ: ์ธ๊ฐ์ฒ๋ผ ๋ท๋ค๋ฆฌ๋ก ๊ฑธ์ ์ ์๋ ๊ตฌํ ๋ง์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๊ธฐ์ฌ๋ ํ์ฌ ์๊ณต๊ฐ ์ฐ์์ฒด์ ์ฐ๊ฒฐ๋ ์คํ ์ปจํ
์คํธ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ค๋์์ ๊ตฐ์ฌ์ ๊ฐ๋ฑ์ ์ผ์ผํฌ ์ ์๋ ๋ฅ๋ ฅ์ ๊ฐ์ถ ๋ง ํ์ ์คํํ๋ ๊ฒ์ด ํ์ํฉ๋๋ค. O(n * log(n))์์๋ ์ด ์์
์ ์ด๋ป๊ฒ ์ํํฉ๋๊น?
- ํ ... ์ฐ์ ๊ฐ์นํ๋จ์ ํฌ๊ธฐํ๊ฒ ์ต๋๋ค. ๋๋ ๋ง์นจ๋ด ๊ตฌํ ๋ง์ ์
๋ฉ์ด๊ฐ ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ง๋ฌธ์ ๊ณต์ํ ์์ฒด๊ฐ ๋ชจ๋ ์๋ฏธ๋ฅผ ์์ ๊ฒ์
๋๋ค. ๋ ์์ ๋ ๋์์ ์ด ๋ง์ด ๋๊ณ , ๊ทธ๋ฐ ๋ง๋ค์ ์
๋ฉ์ด๊ฐ ๋๊ณ , ์ค๋์ด ๋ ๊ฒ์ด๋ค. ์์๊ณผ ๋ณํฉ์ ๊ฒฝ์ฐ O(n * log(n) )๋ O(n ^n )์ ์์ ํ ๊ตฌ๋ณํ ์ ์์ต๋๋ค.
- ๊ณ ๋ง์์, ์ธ๋ฅด๊ฒ์ด. ๋ค์ ์ ํ๋๋ฆฌ๊ฒ ์ต๋๋ค.
- ์ ๋ง ๊ทธ๋ ์ต๋๋ค. ์ฒ๋ง์์. ๋ค์ ์ ํํ ํ์๊ฐ ์์ต๋๋ค.
์ถ์ฒ : habr.com