์ํํธ์จ์ด ๊ฐ๋ฐ์์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํค๋ ํด๋ฆฐ ์ฝ๋์ ์์น์ ํ๊ตฌํ์ฌ ์ ์ธ๊ณ ํ๋ก๊ทธ๋๋จธ๋ค์๊ฒ ๋์์ ์ค๋๋ค.
ํด๋ฆฐ ์ฝ๋: ๊ธ๋ก๋ฒ ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ๋ฅผ ์ํ ๊ฐ๋ ์ฑ ๋์ ๊ตฌํ์ ๊ธฐ์
์ญ๋์ ์ด๊ณ ์ํธ ์ฐ๊ฒฐ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ธ๊ณ์์, ๊ธฐ๋ฅ์ ์ผ ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ฝ๊ฒ ์ดํดํ ์ ์๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฅ๋ ฅ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ํด๋ฆฐ ์ฝ๋์ ๋ณธ์ง์ ๋๋ค. ํด๋ฆฐ ์ฝ๋๋ ์ํํธ์จ์ด ๊ตฌํ์์ ๊ฐ๋ ์ฑ, ์ ์ง๋ณด์์ฑ, ๊ทธ๋ฆฌ๊ณ ๋จ์์ฑ์ ๊ฐ์กฐํ๋ ์ผ๋ จ์ ์์น๊ณผ ๊ดํ์ ๋๋ค. ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์๊ฒ ํด๋ฆฐ ์ฝ๋๋ฅผ ์์ฉํ๋ ๊ฒ์ ๋จ์ํ ์ ํธ์ ๋ฌธ์ ๊ฐ ์๋๋๋ค. ์ด๋ ํจ๊ณผ์ ์ธ ํ์ , ๋ ๋น ๋ฅธ ๊ฐ๋ฐ ์ฃผ๊ธฐ, ๊ทธ๋ฆฌ๊ณ ๊ถ๊ทน์ ์ผ๋ก ๊ฒฌ๊ณ ํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์ํํธ์จ์ด ์๋ฃจ์ ์ ๋ง๋ค๊ธฐ ์ํ ๊ทผ๋ณธ์ ์ธ ์๊ตฌ์ฌํญ์ ๋๋ค.
ํด๋ฆฐ ์ฝ๋๋ ์ ์ ์ธ๊ณ์ ์ผ๋ก ์ค์ํ๊ฐ?
์ํํธ์จ์ด ๊ฐ๋ฐํ์ ์ ์ ๋ ๋ค์ํ ๊ตญ๊ฐ, ๋ฌธํ, ์๊ฐ๋์ ๋ถ์ฐ๋๊ณ ์์ต๋๋ค. ์ด๋ฌํ ๊ธ๋ก๋ฒ ๋ถํฌ๋ ์ฝ๋๋ฒ ์ด์ค ๋ด์์ ๊ณตํต๋ ์ธ์ด์ ์ดํด์ ํ์์ฑ์ ์ฆํญ์ํต๋๋ค. ์ฝ๋๊ฐ ๊นจ๋ํ๋ฉด, ๊ทธ๊ฒ์ ๋ณดํธ์ ์ธ ์ฒญ์ฌ์ง ์ญํ ์ ํ์ฌ ๋ค์ํ ๋ฐฐ๊ฒฝ์ ๊ฐ์ง ๊ฐ๋ฐ์๋ค์ด ๊ด๋ฒ์ํ ์จ๋ณด๋ฉ์ด๋ ์ง์์ ์ธ ์ค๋ช ์์ด๋ ๊ทธ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ์ ํ๊ณ , ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์๋ณํ๋ฉฐ, ํจ๊ณผ์ ์ผ๋ก ๊ธฐ์ฌํ ์ ์๊ฒ ํด์ค๋๋ค.
์ธ๋, ๋ ์ผ, ๋ธ๋ผ์ง์ ์์ง๋์ด๋ก ๊ตฌ์ฑ๋ ๊ฐ๋ฐํ์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค. ๋ง์ฝ ์ฝ๋๋ฒ ์ด์ค๊ฐ ์ด์์ ํ๊ณ , ์ผ๊ด์ฑ ์์ด ํ์ํ๋์ด ์์ผ๋ฉฐ, ๋ชจํธํ ์ด๋ฆ์ง๊ธฐ ๊ท์น์ ์ฌ์ฉํ๋ค๋ฉด ๊ณต์ ๊ธฐ๋ฅ์ ๋๋ฒ๊น ํ๋ ๊ฒ์ ์๋นํ ์ฅ์ ๋ฌผ์ด ๋ ์ ์์ต๋๋ค. ๊ฐ ๊ฐ๋ฐ์๋ ์ฝ๋๋ฅผ ๋ค๋ฅด๊ฒ ํด์ํ์ฌ ์คํด์ ์ง์ฐ์ ์ด๋ํ ์ ์์ต๋๋ค. ๋ฐ๋๋ก, ๋ช ํ์ฑ๊ณผ ๊ตฌ์กฐ๋ฅผ ํน์ง์ผ๋ก ํ๋ ํด๋ฆฐ ์ฝ๋๋ ์ด๋ฌํ ๋ชจํธ์ฑ์ ์ต์ํํ์ฌ ๋ณด๋ค ์์ง๋ ฅ ์๊ณ ์์ฐ์ ์ธ ํ ํ๊ฒฝ์ ์กฐ์ฑํฉ๋๋ค.
๊ฐ๋ ์ฑ์ ์ํ ํด๋ฆฐ ์ฝ๋์ ํต์ฌ ๊ธฐ๋ฅ
๋ก๋ฒํธ C. ๋งํด(์ํด ๋ฐฅ)์ ์ํด ๋์คํ๋ ํด๋ฆฐ ์ฝ๋์ ๊ฐ๋ ์ ์ฌ๋ฌ ํต์ฌ ์์น์ ํฌํจํฉ๋๋ค. ๊ฐ๋ ์ฑ ์๋ ๊ตฌํ์ ๋ฌ์ฑํ๊ธฐ ์ํ ๊ฐ์ฅ ์ค์ํ ์์น๋ค์ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
1. ์๋ฏธ ์๋ ์ด๋ฆ: ์ฒซ ๋ฒ์งธ ๋ฐฉ์ด์
๋ณ์, ํจ์, ํด๋์ค, ํ์ผ์ ์ฐ๋ฆฌ๊ฐ ์ ํํ๋ ์ด๋ฆ์ ์ฝ๋์ ์๋๋ฅผ ์ ๋ฌํ๋ ์ฃผ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์์ด๊ฐ ์ข ์ข ๊ณต์ฉ์ด๋ก ์ฌ์ฉ๋์ง๋ง ๋ชจ๋ ์ฌ๋์ ๋ชจ๊ตญ์ด๋ ์๋ ์ ์๋ ๊ธ๋ก๋ฒ ํ๊ฒฝ์์๋ ๋ช ํ์ฑ์ด ๋์ฑ ์ค์ํฉ๋๋ค.
- ์๋๋ฅผ ๋๋ฌ๋ด๋ผ: ์ด๋ฆ์ ํด๋น ์ํฐํฐ๊ฐ ๋ฌด์์ ํ๊ฑฐ๋ ๋ฌด์์ ๋ํ๋ด๋์ง ๋ช ํํ๊ฒ ํ์ํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ ์ง๋ฅผ ์๋ฏธํ๋ `d` ๋์ `elapsedDays`๋ฅผ ์ฌ์ฉํ์ธ์. ๋ณต์กํ ์์ ์ ๋ํด `process()` ๋์ `processCustomerOrder()` ๋๋ `calculateInvoiceTotal()`๋ฅผ ์ฌ์ฉํ์ธ์.
- ์ธ์ฝ๋ฉ์ ํผํ๋ผ: ํ๊ฐ๋ฆฌ์ ํ๊ธฐ๋ฒ(์: `strName`, `iCount`)๊ณผ ๊ฐ์ด ์ปจํ ์คํธ์์ ์ ์ถํ ์ ์๋ ์ ๋ณด๋ฅผ ํฌํจํ์ง ๋ง์ธ์. ํ๋ IDE๋ ํ์ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ฏ๋ก ์ด๋ฌํ ํ๊ธฐ๋ฒ์ ๋ถํ์ํ๋ฉฐ ์ข ์ข ํผ๋์ ์ค๋๋ค.
- ์๋ฏธ ์๋ ๊ตฌ๋ถ์ ํ๋ผ: ๋๋ฌด ๋น์ทํ๊ฑฐ๋ ๋จ์ผ ๋ฌธ์ ๋๋ ์์์ ์ซ์๋ก๋ง ๋ค๋ฅธ ์ด๋ฆ์ ์ฌ์ฉํ์ง ๋ง์ธ์. ์๋ฅผ ๋ค์ด, `Product1`, `Product2`๋ `ProductActive`, `ProductInactive`๋ณด๋ค ์ ๋ณด๊ฐ ์ ์ต๋๋ค.
- ๋ฐ์ ๊ฐ๋ฅํ ์ด๋ฆ์ ์ฌ์ฉํ๋ผ: ๊ณ ๋๋ก ๊ธฐ์ ์ ์ธ ๋งฅ๋ฝ์์๋ ํญ์ ๊ฐ๋ฅํ์ง๋ ์์ง๋ง, ๋ฐ์ ๊ฐ๋ฅํ ์ด๋ฆ์ ํ ํ ๋ก ์ค ๊ตฌ๋ ์์ฌ์ํต์ ๋์์ด ๋ ์ ์์ต๋๋ค.
- ๊ฒ์ ๊ฐ๋ฅํ ์ด๋ฆ์ ์ฌ์ฉํ๋ผ: ํ ๊ธ์ ๋ณ์ ์ด๋ฆ์ด๋ ๋ชจํธํ ์ฝ์ด๋ ํฐ ์ฝ๋๋ฒ ์ด์ค ๋ด์์ ์ฐพ๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ๊ฒ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์ฝ๊ฒ ์ฐพ์ ์ ์๋ ์์ ์ ์ธ ์ด๋ฆ์ ์ ํํ์ธ์.
- ํด๋์ค ์ด๋ฆ: ๋ช ์ฌ ๋๋ ๋ช ์ฌ๊ตฌ์ฌ์ผ ํ๋ฉฐ, ์ข ์ข ๊ฐ๋ ์ด๋ ์ํฐํฐ๋ฅผ ๋ํ๋ ๋๋ค(์: `Customer`, `OrderProcessor`, `DatabaseConnection`).
- ๋ฉ์๋ ์ด๋ฆ: ๋์ฌ ๋๋ ๋์ฌ๊ตฌ์ฌ์ผ ํ๋ฉฐ, ๋ฉ์๋๊ฐ ์ํํ๋ ์์ ์ ์ค๋ช ํฉ๋๋ค(์: `getUserDetails()`, `saveOrder()`, `validateInput()`).
๊ธ๋ก๋ฒ ์์: ์ ์์๊ฑฐ๋ ํ๋ซํผ์์ ์์ ํ๋ ํ์ ์์ํด ๋ณด์ธ์. `custInfo`๋ผ๋ ๋ณ์๋ ๋ชจํธํ ์ ์์ต๋๋ค. ๊ณ ๊ฐ ์ ๋ณด์ผ๊น์, ๋น์ฉ ์ง์์ผ๊น์, ์๋๋ฉด ๋ค๋ฅธ ๊ฒ์ผ๊น์? `customerDetails`๋ `shippingAddress`์ ๊ฐ์ด ๋ ์์ ์ ์ธ ์ด๋ฆ์ ๊ฐ๋ฐ์์ ์ธ์ด์ ๋ฐฐ๊ฒฝ๊ณผ ์๊ด์์ด ์คํด์ ์ฌ์ง๋ฅผ ๋จ๊ธฐ์ง ์์ต๋๋ค.
2. ํจ์: ์๊ณ , ์ง์ค์ ์ด๋ฉฐ, ๋จ์ผ ๋ชฉ์ ์ ๊ฐ์ง ๊ฒ
ํจ์๋ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑ ์์์ ๋๋ค. ํด๋ฆฐ ํจ์๋ ์งง๊ณ , ํ ๊ฐ์ง ์ผ์ ํ๋ฉฐ, ๊ทธ ์ผ์ ์ ํด๋ ๋๋ค. ์ด ์์น์ ํจ์๋ฅผ ์ดํดํ๊ณ , ํ ์คํธํ๊ณ , ์ฌ์ฌ์ฉํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
- ์๊ฒ: ํจ์๋ ๋ช ์ค ์ดํ๋ก ์ ์งํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ์ธ์. ํจ์๊ฐ ๊ธธ์ด์ง๋ฉด ๋๋ฌด ๋ง์ ์ผ์ ํ๊ณ ์๋ค๋ ์ ํธ์ผ ์ ์์ผ๋ฉฐ, ๋ ์๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ๋จ์๋ก ๋ถํด๋ ์ ์์ต๋๋ค.
- ํ ๊ฐ์ง ์ผ๋ง ํ๋ผ: ๊ฐ ํจ์๋ ๋จ ํ๋์ ์ ์ ์๋ ๋ชฉ์ ์ ๊ฐ์ ธ์ผ ํฉ๋๋ค. ๋ง์ฝ ํจ์๊ฐ ์ฌ๋ฌ ๊ฐ์ ๋๋ ทํ ์์ ์ ์ํํ๋ค๋ฉด, ๋ณ๋์ ํจ์๋ก ๋ฆฌํฉํ ๋งํด์ผ ํฉ๋๋ค.
- ์์ ์ ์ธ ์ด๋ฆ: ์์ ์ธ๊ธํ๋ฏ์ด, ํจ์ ์ด๋ฆ์ ๊ทธ ๋ชฉ์ ์ ๋ช ํํ๊ฒ ํํํด์ผ ํฉ๋๋ค.
- ๋ถ์ ํจ๊ณผ(Side Effect) ๊ธ์ง: ํจ์๋ ์ด์์ ์ผ๋ก ๊ทธ๊ฒ์ด ๋ช ์์ ์ธ ๋ชฉ์ (์: setter ๋ฉ์๋)์ด ์๋ ํ, ์์ ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ์ํ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ์๋๋ ์์ ์ ์ํํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ์ฝ๋๋ฅผ ์์ธก ๊ฐ๋ฅํ๊ณ ์ถ๋ก ํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
- ์ ์ ์ธ์๋ฅผ ์ ํธํ๋ผ: ์ธ์๊ฐ ๋ง์ ํจ์๋ ๋ค๋ฃจ๊ธฐ ์ด๋ ต๊ณ ์ฌ๋ฐ๋ฅด๊ฒ ํธ์ถํ๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ๊ด๋ จ๋ ์ธ์๋ฅผ ๊ฐ์ฒด๋ก ๊ทธ๋ฃนํํ๊ฑฐ๋ ํ์ํ ๊ฒฝ์ฐ ๋น๋ ํจํด์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์.
- ํ๋๊ทธ ์ธ์๋ฅผ ํผํ๋ผ: ๋ถ๋ฆฌ์ธ ํ๋๊ทธ๋ ์ข ์ข ํจ์๊ฐ ๋๋ฌด ๋ง์ ์ผ์ ํ๋ ค๊ณ ํ๋ค๋ ๊ฒ์ ๋ํ๋ ๋๋ค. ๋์ ๊ฐ ๊ฒฝ์ฐ์ ๋ํด ๋ณ๋์ ํจ์๋ฅผ ๋ง๋๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์.
๊ธ๋ก๋ฒ ์์: `calculateShippingAndTax(order)`๋ผ๋ ํจ์๋ฅผ ์๊ฐํด ๋ณด์ธ์. ์ด ํจ์๋ ์๋ง๋ ๋ ๊ฐ์ง ๋ณ๊ฐ์ ์์ ์ ์ํํ ๊ฒ์ ๋๋ค. ์ด๋ฅผ `calculateShippingCost(order)`์ `calculateTax(order)`๋ก ๋ฆฌํฉํ ๋งํ๊ณ , ๋ ํจ์๋ฅผ ๋ชจ๋ ํธ์ถํ๋ ์์ ์์ค์ ํจ์๋ฅผ ๋๋ ๊ฒ์ด ๋ ๊นจ๋ํ ๊ฒ์ ๋๋ค.
3. ์ฃผ์: ์ฝ๋๋ก ์ค๋ช ์ด ์ ๋ ๋, ํ์ง๋ง ๋๋ฌด ์์ฃผ๋ ๋ง๊ณ
์ฃผ์์ ์ฝ๋๊ฐ '๋ฌด์'์ ํ๋์ง๊ฐ ์๋๋ผ '์' ๊ทธ๋ ๊ฒ ํ๋์ง๋ฅผ ์ค๋ช ํ๋ ๋ฐ ์ฌ์ฉ๋์ด์ผ ํฉ๋๋ค. '๋ฌด์'์ ์ฝ๋ ์์ฒด๊ฐ ์ค๋ช ํด์ผ ํฉ๋๋ค. ๊ณผ๋ํ ์ฃผ์์ ์ฝ๋๋ฅผ ์ด์์ ํ๊ฒ ๋ง๋ค๊ณ , ์ต์ ์ํ๋ก ์ ์ง๋์ง ์์ผ๋ฉด ์ ์ง๋ณด์ ๋ถ๋ด์ด ๋ ์ ์์ต๋๋ค.
- ์๋๋ฅผ ์ค๋ช ํ๋ผ: ๋ณต์กํ ์๊ณ ๋ฆฌ์ฆ, ๋น์ฆ๋์ค ๋ก์ง ๋๋ ํน์ ์ค๊ณ ์ ํ์ ์ด์ ๋ฅผ ๋ช ํํ ํ๊ธฐ ์ํด ์ฃผ์์ ์ฌ์ฉํ์ธ์.
- ์ค๋ณต๋ ์ฃผ์์ ํผํ๋ผ: ๋จ์ํ ์ฝ๋๊ฐ ํ๋ ์ผ์ ๋ค์ ๋งํ๋ ์ฃผ์(์: `// ์นด์ดํฐ ์ฆ๊ฐ`)์ ๋ถํ์ํฉ๋๋ค.
- ์ฝ๋๋ฟ๋ง ์๋๋ผ ์ค๋ฅ๋ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ผ: ๋๋ก๋ ์ธ๋ถ ์ ์ฝ ๋๋ฌธ์ ์ด์์ ์ด์ง ์์ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ ์๋ ์์ต๋๋ค. ์ด๋ฅผ ์ค๋ช ํ๋ ์ฃผ์์ ๋งค์ฐ ๊ท์คํ ์ ์์ต๋๋ค.
- ์ฃผ์์ ์ต์ ์ํ๋ก ์ ์งํ๋ผ: ์ค๋๋ ์ฃผ์์ ์๋ ๊ฒ๋ณด๋ค ๋์ฉ๋๋ค. ๊ฐ๋ฐ์๋ฅผ ์ค๋ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ธ๋ก๋ฒ ์์: ํน์ ์ฝ๋๊ฐ ๋ ๊ฑฐ์ ์์คํ ํตํฉ ๋๋ฌธ์ ํ์ค ๋ณด์ ๊ฒ์ฌ๋ฅผ ์ฐํํด์ผ ํ๋ ๊ฒฝ์ฐ, ์ด ๊ฒฐ์ ์ ๋ํ ์ค๋ช ๊ณผ ๊ด๋ จ ์ด์ ํธ๋์ปค์ ๋ํ ์ฐธ์กฐ๋ฅผ ๋ด์ ์ฃผ์์ ๋์ค์ ์ด๋ฅผ ๋ง์ฃผํ๋ ๋ชจ๋ ๊ฐ๋ฐ์์๊ฒ ๋ณด์ ๋ฐฐ๊ฒฝ๊ณผ ์๊ด์์ด ๋งค์ฐ ์ค์ํฉ๋๋ค.
4. ์์๊ณผ ๋ค์ฌ์ฐ๊ธฐ: ์๊ฐ์ ๊ตฌ์กฐ
์ผ๊ด๋ ์์์ ์ฝ๋๋ฅผ ์๊ฐ์ ์ผ๋ก ์ ๋ฆฌํ๊ณ ํ์ด๋ณด๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค. ํน์ ์คํ์ผ ๊ฐ์ด๋๋ ์ธ์ด๋ ํ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์ง๋ง, ๊ธฐ๋ณธ ์์น์ ํต์ผ์ฑ์ ๋๋ค.
- ์ผ๊ด๋ ๋ค์ฌ์ฐ๊ธฐ: ์ฝ๋ ๋ธ๋ก์ ๋ํ๋ด๊ธฐ ์ํด ๊ณต๋ฐฑ์ด๋ ํญ์ ์ผ๊ด๋๊ฒ ์ฌ์ฉํ์ธ์. ๋๋ถ๋ถ์ ํ๋ IDE๋ ์ด๋ฅผ ๊ฐ์ ํ๋๋ก ์ค์ ํ ์ ์์ต๋๋ค.
- ๊ณต๋ฐฑ: ํจ์ ๋ด์์ ๋ ผ๋ฆฌ์ ์ฝ๋ ๋ธ๋ก์ ๋ถ๋ฆฌํ๊ธฐ ์ํด ๊ณต๋ฐฑ์ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ์ฌ ๊ฐ๋ ์ฑ์ ๋์ด์ธ์.
- ์ค ๊ธธ์ด: ์ฝ๊ธฐ ํ๋ฆ์ ๋ฐฉํดํ ์ ์๋ ๊ฐ๋ก ์คํฌ๋กค์ ํผํ๊ธฐ ์ํด ์ค์ ์ ๋นํ ์งง๊ฒ ์ ์งํ์ธ์.
- ๊ดํธ ์คํ์ผ: ์ค๊ดํธ์ ๋ํด ์ผ๊ด๋ ์คํ์ผ(์: K&R ๋๋ ์ฌ๋ง ์คํ์ผ)์ ์ ํํ๊ณ ์ด๋ฅผ ์ค์ํ์ธ์.
๊ธ๋ก๋ฒ ์์: ์๋ ์์ ์ง์ ๋๊ตฌ์ ๋ฆฐํฐ๋ ๊ธ๋ก๋ฒ ํ์์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ์ด๋ค์ ์ฌ์ ์ ์๋ ์คํ์ผ ๊ฐ์ด๋๋ฅผ ์๋์ผ๋ก ์ ์ฉํ์ฌ ๊ฐ์ธ์ ์ ํธ๋ ์ง์ญ์ ์ฝ๋ฉ ์ต๊ด์ ๊ด๊ณ์์ด ๋ชจ๋ ๊ธฐ์ฌ์ ๊ฑธ์ณ ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค. Prettier(JavaScript์ฉ), Black(Python์ฉ) ๋๋ gofmt(Go์ฉ)์ ๊ฐ์ ๋๊ตฌ๋ค์ด ํ๋ฅญํ ์์ ๋๋ค.
5. ์ค๋ฅ ์ฒ๋ฆฌ: ์ฐ์ํ๊ณ ์ ์ตํ๊ฒ
๊ฒฌ๊ณ ํ ์ค๋ฅ ์ฒ๋ฆฌ๋ ์ ๋ขฐํ ์ ์๋ ์ํํธ์จ์ด๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ํ์์ ์ ๋๋ค. ํด๋ฆฐ ์ค๋ฅ ์ฒ๋ฆฌ๋ ์ค๋ฅ๋ฅผ ๋ช ํํ๊ฒ ์ ํธํ๊ณ ํด๊ฒฐ์ ์ํ ์ถฉ๋ถํ ์ปจํ ์คํธ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค.
- ์์ธ๋ฅผ ์ ์ ํ ์ฌ์ฉํ๋ผ: ์์ธ๋ ์ผ๋ฐ์ ์ธ ์คํ ํ๋ฆ๊ณผ ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ๋ช ํํ๊ฒ ๋ถ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋ง์ ์ธ์ด์์ ์ค๋ฅ ์ฝ๋๋ฅผ ๋ฐํํ๋ ๊ฒ๋ณด๋ค ์ ํธ๋ฉ๋๋ค.
- ์ปจํ ์คํธ๋ฅผ ์ ๊ณตํ๋ผ: ์ค๋ฅ ๋ฉ์์ง๋ ๋ฏผ๊ฐํ ๋ด๋ถ ์ ๋ณด๋ฅผ ๋ ธ์ถํ์ง ์์ผ๋ฉด์ ๋ฌด์์ด ์๋ชป๋์๊ณ ์ ์๋ชป๋์๋์ง๋ฅผ ์ค๋ช ํ๋ ์ ๋ณด๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค.
- Null์ ๋ฐํํ์ง ๋ง๋ผ: `null`์ ๋ฐํํ๋ฉด NullPointerException ์ค๋ฅ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ๋น ์ปฌ๋ ์ ์ ๋ฐํํ๊ฑฐ๋ ํด๋น๋๋ ๊ฒฝ์ฐ ์ต์ ๋ ํ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์.
- ํน์ ์์ธ ํ์ ์ ์ฌ์ฉํ๋ผ: ๋ณด๋ค ๊ตฌ์ฒด์ ์ธ ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ์ํด ์ผ๋ฐ์ ์ธ ์์ธ ํ์ ๋์ ํน์ ์์ธ ํ์ ์ ์ฌ์ฉํ์ธ์.
๊ธ๋ก๋ฒ ์์: ๊ตญ์ ๊ฒฐ์ ๋ฅผ ์ฒ๋ฆฌํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ "๊ฒฐ์ ์คํจ"์ ๊ฐ์ ์ค๋ฅ ๋ฉ์์ง๋ ๋ถ์ถฉ๋ถํฉ๋๋ค. "๊ฒฐ์ ์น์ธ ์คํจ: ์นด๋ ๋ฒํธ XXXX๋ก ๋๋๋ ์นด๋์ ์ ํจ ๊ธฐ๊ฐ์ด ์๋ชป๋์์ต๋๋ค."์ ๊ฐ์ด ๋ ์ ์ตํ ๋ฉ์์ง๋ ์ฌ์ฉ์๋ ์ง์ ์ง์์ด ๊ธฐ์ ์ ์ ๋ฌธ์ฑ์ด๋ ์์น์ ๊ด๊ณ์์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ํ์ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
6. SOLID ์์น: ์ ์ง๋ณด์ ๊ฐ๋ฅํ ์์คํ ๊ตฌ์ถ
SOLID ์์น(๋จ์ผ ์ฑ ์, ๊ฐ๋ฐฉ/ํ์, ๋ฆฌ์ค์ฝํ ์นํ, ์ธํฐํ์ด์ค ๋ถ๋ฆฌ, ์์กด์ฑ ์ญ์ )์ ์ข ์ข ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ ๊ด๋ จ์ด ์์ง๋ง, ๋ถ๋ฆฌ๋๊ณ ์ ์ง๋ณด์ ๊ฐ๋ฅํ๋ฉฐ ํ์ฅ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ๋ง๋๋ ์ ์ ์ ๋ณดํธ์ ์ผ๋ก ์ ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
- ๋จ์ผ ์ฑ ์ ์์น (SRP): ํด๋์ค๋ ๋ชจ๋์ ๋ณ๊ฒฝ๋์ด์ผ ํ ์ด์ ๊ฐ ๋จ ํ๋์ฌ์ผ ํฉ๋๋ค. ์ด๋ ํจ์๊ฐ ํ ๊ฐ์ง ์ผ๋ง ํด์ผ ํ๋ค๋ ์์น๊ณผ ์ผ๋งฅ์ํตํฉ๋๋ค.
- ๊ฐ๋ฐฉ/ํ์ ์์น (OCP): ์ํํธ์จ์ด ์ํฐํฐ(ํด๋์ค, ๋ชจ๋, ํจ์ ๋ฑ)๋ ํ์ฅ์ ๋ํด์๋ ์ด๋ ค ์์ด์ผ ํ์ง๋ง ์์ ์ ๋ํด์๋ ๋ซํ ์์ด์ผ ํฉ๋๋ค. ์ด๋ ํ๊ท(regression)๋ฅผ ๋์ ํ์ง ์๊ณ ํ์ฅ์ฑ์ ์ด์งํฉ๋๋ค.
- ๋ฆฌ์ค์ฝํ ์นํ ์์น (LSP): ํ์ ํ์ ์ ํ๋ก๊ทธ๋จ์ ์ ํ์ฑ์ ๋ณ๊ฒฝํ์ง ์๊ณ ๊ธฐ๋ณธ ํ์ ์ ๋์ฒดํ ์ ์์ด์ผ ํฉ๋๋ค. ์ด๋ ์์ ๊ณ์ธต์ด ์ ๋์ํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น (ISP): ํด๋ผ์ด์ธํธ๋ ์์ ์ด ์ฌ์ฉํ์ง ์๋ ์ธํฐํ์ด์ค์ ์์กดํ๋๋ก ๊ฐ์๋ฐ์์๋ ์ ๋ฉ๋๋ค. ๋ ์๊ณ ๊ตฌ์ฒด์ ์ธ ์ธํฐํ์ด์ค๋ฅผ ์ ํธํ์ธ์.
- ์์กด์ฑ ์ญ์ ์์น (DIP): ์์ ์์ค ๋ชจ๋์ ํ์ ์์ค ๋ชจ๋์ ์์กดํด์๋ ์ ๋ฉ๋๋ค. ๋ ๋ค ์ถ์ํ์ ์์กดํด์ผ ํฉ๋๋ค. ์ถ์ํ๋ ์ธ๋ถ ์ฌํญ์ ์์กดํด์๋ ์ ๋ฉ๋๋ค. ์ธ๋ถ ์ฌํญ์ด ์ถ์ํ์ ์์กดํด์ผ ํฉ๋๋ค. ์ด๋ ํ ์คํธ ์ฉ์ด์ฑ๊ณผ ์ ์ฐ์ฑ์ ํต์ฌ์ ๋๋ค.
๊ธ๋ก๋ฒ ์์: ๋ค์ํ ๊ฒฐ์ ๊ฒ์ดํธ์จ์ด(์: Stripe, PayPal, Adyen)๋ฅผ ์ง์ํด์ผ ํ๋ ์์คํ ์ ์์ํด ๋ณด์ธ์. OCP์ DIP๋ฅผ ์ค์ํ๋ฉด ๊ธฐ์กด ์ฝ๋๋ฅผ ์์ ํ๋ ๋์ ๊ณตํต `PaymentGateway` ์ธํฐํ์ด์ค์ ์๋ก์ด ๊ตฌํ์ ์์ฑํ์ฌ ์๋ก์ด ๊ฒฐ์ ๊ฒ์ดํธ์จ์ด๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์ด๋ ์์คํ ์ ๊ธ๋ก๋ฒ ์์ฅ์ ์๊ตฌ์ ์งํํ๋ ๊ฒฐ์ ๊ธฐ์ ์ ์ ์ํ ์ ์๊ฒ ๋ง๋ญ๋๋ค.
7. ์ค๋ณต ํผํ๊ธฐ: DRY ์์น
DRY(Don't Repeat Yourself) ์์น์ ์ ์ง๋ณด์ ๊ฐ๋ฅํ ์ฝ๋์ ๊ธฐ๋ณธ์ ๋๋ค. ์ค๋ณต๋ ์ฝ๋๋ ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ๋์ด๊ณ ์ ๋ฐ์ดํธ๋ฅผ ๋ ์๊ฐ ์๋ชจ์ ์ผ๋ก ๋ง๋ญ๋๋ค.
- ๋ฐ๋ณต์ ์ธ ํจํด ์๋ณ: ์ฌ๋ฌ ๋ฒ ๋ํ๋๋ ์ฝ๋ ๋ธ๋ก์ ์ฐพ์ผ์ธ์.
- ํจ์๋ ํด๋์ค๋ก ์ถ์ถ: ์ค๋ณต๋ ๋ก์ง์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํจ์, ๋ฉ์๋ ๋๋ ํด๋์ค๋ก ์บก์ํํ์ธ์.
- ์ค์ ํ์ผ ์ฌ์ฉ: ๋ณ๊ฒฝ๋ ์ ์๋ ๊ฐ์ ํ๋์ฝ๋ฉํ์ง ๋ง๊ณ ์ค์ ํ์ผ์ ์ ์ฅํ์ธ์.
๊ธ๋ก๋ฒ ์์: ๋ ์ง์ ์๊ฐ์ ํ์ํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ฐํด ๋ณด์ธ์. ๋ ์ง ์์ ์ง์ ๋ก์ง์ด ์ฌ๋ฌ ๊ณณ(์: ์ฌ์ฉ์ ํ๋กํ, ์ฃผ๋ฌธ ๋ด์ญ)์์ ๋ฐ๋ณต๋๋ค๋ฉด, ๋จ์ผ `formatDateTime(timestamp)` ํจ์๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ชจ๋ ๋ ์ง ํ์๊ฐ ๋์ผํ ํ์์ ์ฌ์ฉํ๋๋ก ๋ณด์ฅํ๊ณ , ํ์ํ ๋ ์ ์ญ์ ์ผ๋ก ์์ ๊ท์น์ ์ฝ๊ฒ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค.
8. ๊ฐ๋ ์ฑ ์๋ ์ ์ด ๊ตฌ์กฐ
๋ฃจํ, ์กฐ๊ฑด๋ฌธ ๋ฐ ๊ธฐํ ์ ์ด ํ๋ฆ ๋ฉ์ปค๋์ฆ์ ๊ตฌ์ฑํ๋ ๋ฐฉ์์ ๊ฐ๋ ์ฑ์ ํฐ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
- ์ค์ฒฉ ์ต์ํ: ๊น๊ฒ ์ค์ฒฉ๋ `if-else` ๋ฌธ์ด๋ ๋ฃจํ๋ ๋ฐ๋ผ๊ฐ๊ธฐ ์ด๋ ต์ต๋๋ค. ์ด๋ฅผ ๋ ์์ ํจ์๋ก ๋ฆฌํฉํ ๋งํ๊ฑฐ๋ ๊ฐ๋ ํด๋ก์ฆ(guard clauses)๋ฅผ ์ฌ์ฉํ์ธ์.
- ์๋ฏธ ์๋ ์กฐ๊ฑด๋ฌธ ์ฌ์ฉ: ์์ ์ ์ธ ์ด๋ฆ์ ๊ฐ์ง ๋ถ๋ฆฌ์ธ ๋ณ์๋ ๋ณต์กํ ์กฐ๊ฑด์ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
- ๋ฒ์๊ฐ ์ ํด์ง์ง ์์ ๋ฃจํ์๋ `for`๋ณด๋ค `while`์ ์ ํธํ๋ผ: ๋ฐ๋ณต ํ์๋ฅผ ๋ฏธ๋ฆฌ ์ ์ ์๋ ๊ฒฝ์ฐ, `while` ๋ฃจํ๊ฐ ์ข ์ข ๋ ํํ๋ ฅ์ด ํ๋ถํฉ๋๋ค.
๊ธ๋ก๋ฒ ์์: ๋ถ์ํ๊ธฐ ์ด๋ ค์ธ ์ ์๋ ์ค์ฒฉ๋ `if-else` ๊ตฌ์กฐ ๋์ , ๋ช ํํ ์ด๋ฆ์ ๊ฐ์ง ๋ณ๋์ ํจ์๋ก ๋ก์ง์ ์ถ์ถํ๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณด์ธ์. ์๋ฅผ ๋ค์ด, `isUserEligibleForDiscount(user)` ํจ์๋ ๋ณต์กํ ์๊ฒฉ ๊ฒ์ฌ๋ฅผ ์บก์ํํ์ฌ ์ฃผ ๋ก์ง์ ๋ ๊นจ๋ํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
9. ์ ๋ ํ ์คํธ: ์ฒญ๊ฒฐํจ์ ๋ณด์ฆ
์ ๋ ํ ์คํธ ์์ฑ์ ํด๋ฆฐ ์ฝ๋์ ํ์์ ์ธ ๋ถ๋ถ์ ๋๋ค. ํ ์คํธ๋ ์ด์์๋ ๋ฌธ์์ด์ ํ๊ท(regression)์ ๋ํ ์์ ๋ง ์ญํ ์ ํ๋ฉฐ, ๋ณ๊ฒฝ ์ฌํญ์ด ๊ธฐ์กด ๊ธฐ๋ฅ์ ์์์ํค์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ํ ์คํธ ๊ฐ๋ฅํ ์ฝ๋: SRP ๋ฐ SOLID ์ค์์ ๊ฐ์ ํด๋ฆฐ ์ฝ๋ ์์น์ ์์ฐ์ค๋ฝ๊ฒ ๋ ํ ์คํธํ๊ธฐ ์ฌ์ด ์ฝ๋๋ก ์ด์ด์ง๋๋ค.
- ์๋ฏธ ์๋ ํ ์คํธ ์ด๋ฆ: ํ ์คํธ ์ด๋ฆ์ ์ด๋ค ์๋๋ฆฌ์ค๋ฅผ ํ ์คํธํ๋์ง์ ์์ ๊ฒฐ๊ณผ๊ฐ ๋ฌด์์ธ์ง๋ฅผ ๋ช ํํ๊ฒ ๋ํ๋ด์ผ ํฉ๋๋ค.
- ์ค๋น-์คํ-๊ฒ์ฆ(Arrange-Act-Assert): ์ค์ , ์คํ, ๊ฒ์ฆ์ ๋ช ํํ ๋จ๊ณ๋ก ํ ์คํธ๋ฅผ ๊ตฌ์ฑํ์ธ์.
๊ธ๋ก๋ฒ ์์: ๋ค์ํ ํตํ ์๊ณผ ์ฃ์ง ์ผ์ด์ค(์: 0, ์์ ๊ฐ, ๊ณผ๊ฑฐ ํ์จ)๋ฅผ ๋ค๋ฃจ๋ ํ ์คํธ๊ฐ ํฌํจ๋ ํตํ ๋ณํ ์ปดํฌ๋ํธ๋ ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์๊ฒ ์ด ์ปดํฌ๋ํธ๊ฐ ๋ค์ํ ๊ธ์ต ๊ฑฐ๋๋ฅผ ์ฒ๋ฆฌํ ๋์๋ ์์๋๋ก ์๋ํ ๊ฒ์ด๋ผ๋ ํ์ ์ ์ค๋๋ค.
๊ธ๋ก๋ฒ ํ์์ ํด๋ฆฐ ์ฝ๋ ๋ฌ์ฑํ๊ธฐ
๋ถ์ฐ๋ ํ ์ ์ฒด์ ๊ฑธ์ณ ํด๋ฆฐ ์ฝ๋ ๊ดํ์ ํจ๊ณผ์ ์ผ๋ก ๊ตฌํํ๋ ค๋ฉด ์์์ ์ธ ๋ ธ๋ ฅ๊ณผ ํ๋ฆฝ๋ ํ๋ก์ธ์ค๊ฐ ํ์ํฉ๋๋ค:
- ์ฝ๋ฉ ํ์ค ์๋ฆฝ: ์ด๋ฆ์ง๊ธฐ ๊ท์น, ์์, ๋ชจ๋ฒ ์ฌ๋ก ๋ฐ ์ผ๋ฐ์ ์ธ ์ํฐ ํจํด์ ๋ค๋ฃจ๋ ํฌ๊ด์ ์ธ ์ฝ๋ฉ ํ์ค์ ํฉ์ํ์ธ์. ์ด ํ์ค์ ์์น์ ์ผ๋ก๋ ์ธ์ด์ ๊ตฌ์ ๋ฐ์ง ์์์ผ ํ์ง๋ง, ์ฌ์ฉ๋๋ ๊ฐ ์ธ์ด์ ๋ํ ์ ์ฉ์ ์์ด์๋ ๊ตฌ์ฒด์ ์ด์ด์ผ ํฉ๋๋ค.
- ์ฝ๋ ๋ฆฌ๋ทฐ ํ๋ก์ธ์ค ํ์ฉ: ๊ฒฌ๊ณ ํ ์ฝ๋ ๋ฆฌ๋ทฐ๋ ํ์์ ์ ๋๋ค. ๊ฐ๋ ์ฑ, ์ ์ง๋ณด์์ฑ, ํ์ค ์ค์์ ์ด์ ์ ๋ง์ถ ๊ฑด์ค์ ์ธ ํผ๋๋ฐฑ์ ์ฅ๋ คํ์ธ์. ์ด๋ ํ ์ ์ฒด์ ๊ฑธ์ณ ์ง์์ ๊ณต์ ํ๊ณ ๋ฉํ ๋งํ ์ ์๋ ์ต๊ณ ์ ๊ธฐํ์ ๋๋ค.
- ์๋ํ๋ ๊ฒ์ฌ: CI/CD ํ์ดํ๋ผ์ธ์ ๋ฆฐํฐ์ ํฌ๋งทํฐ๋ฅผ ํตํฉํ์ฌ ์ฝ๋ฉ ํ์ค์ ์๋์ผ๋ก ์ํํ์ธ์. ์ด๋ ์ฃผ๊ด์ฑ์ ์ ๊ฑฐํ๊ณ ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ๊ต์ก ๋ฐ ํ๋ จ์ ํฌ์: ํด๋ฆฐ ์ฝ๋ ์์น๊ณผ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํ ์ ๊ธฐ์ ์ธ ๊ต์ก ์ธ์ ์ ์ ๊ณตํ์ธ์. ๋ฆฌ์์ค, ์ฑ , ๊ธฐ์ฌ๋ฅผ ๊ณต์ ํ์ธ์.
- ํ์ง ๋ฌธํ๋ฅผ ์ฅ๋ ค: ์ฃผ๋์ด ๊ฐ๋ฐ์๋ถํฐ ์๋์ด ์ํคํ ํธ๊น์ง ๋ชจ๋๊ฐ ์ฝ๋ ํ์ง์ ์์คํ ์ฌ๊ธฐ๋ ํ๊ฒฝ์ ์กฐ์ฑํ์ธ์. ๊ฐ๋ฐ์๋ค์ด ๋ช ํ์ฑ์ ๊ฐ์ ํ๊ธฐ ์ํด ๊ธฐ์กด ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋งํ๋๋ก ์ฅ๋ คํ์ธ์.
- ํ์ด ํ๋ก๊ทธ๋๋ฐ ์์ฉ: ์ค์ํ ์น์ ์ด๋ ๋ณต์กํ ๋ก์ง์ ๊ฒฝ์ฐ, ํ์ด ํ๋ก๊ทธ๋๋ฐ์ ํนํ ๋ค์ํ ํ์์ ์ฝ๋ ํ์ง๊ณผ ์ง์ ์ ๋ฌ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๊ฐ๋ ์ฑ ๋์ ๊ตฌํ์ ์ฅ๊ธฐ์ ์ธ ์ด์
ํด๋ฆฐ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ์๊ฐ์ ํฌ์ํ๋ฉด ์๋นํ ์ฅ๊ธฐ์ ์ด์ ์ ์ป์ ์ ์์ต๋๋ค:
- ์ ์ง๋ณด์ ๋น์ฉ ๊ฐ์: ๊ฐ๋ ์ฑ ๋์ ์ฝ๋๋ ์ดํด, ๋๋ฒ๊น , ์์ ์ด ๋ ์ฌ์ ์ ์ง๋ณด์ ์ค๋ฒํค๋๋ฅผ ์ค์ ๋๋ค.
- ๋ ๋น ๋ฅธ ๊ฐ๋ฐ ์ฃผ๊ธฐ: ์ฝ๋๊ฐ ๋ช ํํ๋ฉด ๊ฐ๋ฐ์๊ฐ ์๋ก์ด ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ๋ฒ๊ทธ๋ฅผ ๋ ๋นจ๋ฆฌ ์์ ํ ์ ์์ต๋๋ค.
- ํ์ ๊ฐ์ : ํด๋ฆฐ ์ฝ๋๋ ๋ถ์ฐ๋ ํ ๊ฐ์ ์ํํ ํ์ ์ ์ด์งํ์ฌ ์์ฌ์ํต ์ฅ๋ฒฝ์ ํ๋ญ ๋๋ค.
- ์จ๋ณด๋ฉ ํฅ์: ์๋ก์ด ํ์์ ์ ๊ตฌ์กฐํ๋๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ์ฝ๋๋ฒ ์ด์ค๋ฅผ ํตํด ๋ ๋นจ๋ฆฌ ์ ์ํ ์ ์์ต๋๋ค.
- ์ํํธ์จ์ด ์ ๋ขฐ์ฑ ์ฆ๊ฐ: ํด๋ฆฐ ์ฝ๋ ์์น์ ์ค์ํ๋ ๊ฒ์ ์ข ์ข ๋ ์ ์ ๋ฒ๊ทธ์ ๋ ๊ฒฌ๊ณ ํ ์ํํธ์จ์ด์ ์๊ด๊ด๊ณ๊ฐ ์์ต๋๋ค.
- ๊ฐ๋ฐ์ ๋ง์กฑ๋: ๊นจ๋ํ๊ณ ์ ์ ๋ฆฌ๋ ์ฝ๋๋ก ์์ ํ๋ ๊ฒ์ ๋ ์ฆ๊ฒ๊ณ ๋ ์ข์ ์ค๋ฌ์ ๊ฐ๋ฐ์์ ์ฌ๊ธฐ์ ์ ์ง์จ์ ๋์ ๋๋ค.
๊ฒฐ๋ก
ํด๋ฆฐ ์ฝ๋๋ ๋จ์ํ ๊ท์น์ ์งํฉ ๊ทธ ์ด์์ ๋๋ค. ๊ทธ๊ฒ์ ์ฅ์ธ ์ ์ ์ ๋ํ ๋ง์๊ฐ์ง์ด์ ์ฝ์์ ๋๋ค. ๊ธ๋ก๋ฒ ์ํํธ์จ์ด ๊ฐ๋ฐ ์ปค๋ฎค๋ํฐ์๊ฒ ๊ฐ๋ ์ฑ ๋์ ๊ตฌํ์ ์์ฉํ๋ ๊ฒ์ ์ฑ๊ณต์ ์ด๊ณ , ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ, ์ ์ง๋ณด์ ๊ฐ๋ฅํ ์ํํธ์จ์ด๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ์ค์ํ ์์์ ๋๋ค. ์๋ฏธ ์๋ ์ด๋ฆ, ๊ฐ๊ฒฐํ ํจ์, ๋ช ํํ ์์, ๊ฒฌ๊ณ ํ ์ค๋ฅ ์ฒ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ํต์ฌ ์ค๊ณ ์์น ์ค์์ ์ง์คํจ์ผ๋ก์จ ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์ ๋ ํจ๊ณผ์ ์ผ๋ก ํ์ ํ๊ณ , ์์ ๋ค๊ณผ ๋ฏธ๋ ์ธ๋์ ๊ฐ๋ฐ์๋ค์ ์ํด ํจ๊ป ์ผํ๊ธฐ ์ฆ๊ฑฐ์ด ์ํํธ์จ์ด๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์ํํธ์จ์ด ๊ฐ๋ฐ ์ฌ์ ์ ํญํดํ๋ฉด์, ์ค๋ ์์ฑํ ์ฝ๋๋ ๋ด์ผ ๋ค๋ฅธ ์ฌ๋์ด ์ฝ๊ฒ ๋ ๊ฒ์ด๋ผ๋ ์ ์ ๊ธฐ์ตํ์ธ์ โ ์ด์ฉ๋ฉด ์ง๊ตฌ ๋ฐ๋ํธ์ ์๋ ๋๊ตฐ๊ฐ์ผ ์๋ ์์ต๋๋ค. ๋ช ํํ๊ฒ ๋ง๋ค๊ณ , ๊ฐ๊ฒฐํ๊ฒ ๋ง๋ค๊ณ , ๊นจ๋ํ๊ฒ ๋ง๋์ธ์.