CodeGym /Java Blog /๋ฌด์ž‘์œ„์˜ /์ฝ”๋”ฉ ๊ทœ์น™: ์‹œ์Šคํ…œ ์ƒ์„ฑ์—์„œ ๊ฐœ์ฒด ์ž‘์—…๊นŒ์ง€
John Squirrels
๋ ˆ๋ฒจ 41
San Francisco

์ฝ”๋”ฉ ๊ทœ์น™: ์‹œ์Šคํ…œ ์ƒ์„ฑ์—์„œ ๊ฐœ์ฒด ์ž‘์—…๊นŒ์ง€

๋ฌด์ž‘์œ„์˜ ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
์ข‹์€ ํ•˜๋ฃจ ๋˜์„ธ์š”! ์˜ค๋Š˜์€ ์ข‹์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  Clean Code์™€ ๊ฐ™์€ ์ฑ…์€ ๋ฐฉ๋Œ€ํ•œ ์–‘์˜ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ฒ˜์Œ์—๋Š” ๋ช…ํ™•ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋‹น์žฅ ์ฝ๊ณ  ์‹ถ์–ดํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์ด ๋‹ค ์ฝ์„ ๋•Œ์ฏค์ด๋ฉด ๋‹น์‹ ์€ ์ฝ”๋”ฉ์— ๋Œ€ํ•œ ๋‹น์‹ ์˜ ๋ชจ๋“  ์š•๋ง์„ ์ฃฝ์ผ์ง€๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์„ ๊ณ ๋ คํ•˜์—ฌ ์˜ค๋Š˜ ์ €๋Š” ๋” ๋‚˜์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์€ ๊ฐ€์ด๋“œ(์ž‘์€ ๊ถŒ์žฅ ์‚ฌํ•ญ ์ง‘ํ•ฉ)๋ฅผ ์ œ๊ณตํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ์‹œ์Šคํ…œ ์ƒ์„ฑ ๋ฐ ์ธํ„ฐํŽ˜์ด์Šค, ํด๋ž˜์Šค ๋ฐ ๊ฐœ์ฒด ์ž‘์—…๊ณผ ๊ด€๋ จ๋œ ๊ธฐ๋ณธ ๊ทœ์น™ ๋ฐ ๊ฐœ๋…์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ๋ฅผ ์ฝ๋Š” ๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ์ง€ ์•Š์œผ๋ฉฐ ์ง€๋ฃจํ•˜์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์œ„์—์„œ ์•„๋ž˜๋กœ, ์ฆ‰ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์ผ๋ฐ˜์ ์ธ ๊ตฌ์กฐ์—์„œ ๋” ์ข์€ ์„ธ๋ถ€ ์‚ฌํ•ญ์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๋‚ด ๋ฐฉ์‹๋Œ€๋กœ ์ž‘์—…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฝ”๋”ฉ ๊ทœ์น™: ์‹œ์Šคํ…œ ์ƒ์„ฑ์—์„œ ๊ฐœ์ฒด ์ž‘์—…๊นŒ์ง€ - 1

์‹œ์Šคํ…œ

๋‹ค์Œ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ”๋žŒ์งํ•œ ์‹œ์Šคํ…œ ํŠน์„ฑ์ž…๋‹ˆ๋‹ค.
  • ์ตœ์†Œํ•œ์˜ ๋ณต์žก์„ฑ. ์ง€๋‚˜์น˜๊ฒŒ ๋ณต์žกํ•œ ํ”„๋กœ์ ํŠธ๋Š” ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋‹จ์ˆœ์„ฑ๊ณผ ๋ช…ํ™•์„ฑ์ž…๋‹ˆ๋‹ค(๋‹จ์ˆœํ•จ = ๋” ์ข‹์Œ).
  • ์œ ์ง€ ๋ณด์ˆ˜ ์šฉ์ด์„ฑ. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ๋•Œ ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ฐœ์ธ์ ์œผ๋กœ ์œ ์ง€ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ์ฑ…์ž„์ด ์—†๋”๋ผ๋„). ์ด๋Š” ์ฝ”๋“œ๊ฐ€ ๋ช…ํ™•ํ•˜๊ณ  ๋ช…ํ™•ํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ๋Š์Šจํ•œ ๊ฒฐํ•ฉ. ์ฆ‰, ํ”„๋กœ๊ทธ๋žจ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋ถ€๋ถ„ ๊ฐ„์˜ ์ข…์†์„ฑ ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค(OOP ์›์น™ ์ค€์ˆ˜ ๊ทน๋Œ€ํ™”).
  • ์žฌ์‚ฌ์šฉ ์„ฑ. ์šฐ๋ฆฌ๋Š” ๋‹ค๋ฅธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์œผ๋กœ ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค.
  • ํœด๋Œ€์„ฑ. ์‹œ์Šคํ…œ์„ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์— ์‰ฝ๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์œ ๋‹ˆํผ ์Šคํƒ€์ผ. ์šฐ๋ฆฌ๋Š” ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ๊ท ์ผํ•œ ์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค.
  • ํ™•์žฅ์„ฑ(ํ™•์žฅ์„ฑ). ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š๊ณ  ์‹œ์Šคํ…œ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•ด๋„ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์•„์•ผ ํ•จ).
์ˆ˜์ •์ด๋‚˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์‹ค์ƒ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ์˜ ๋ฐœ๋ช…ํ’ˆ์ด ์‹œ๋Œ€์— ๋ฐœ๋งž์ถ”๋„๋ก ๋•๊ธฐ ์œ„ํ•ด ๋Š์ž„์—†์ด ์ƒˆ๋กœ์šด ๋ถ€ํ’ˆ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ํ™•์žฅ์„ฑ์ด ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค. ํ™•์žฅ์„ฑ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ํ™•์žฅํ•˜๊ณ , ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ณ , ๋” ๋งŽ์€ ๋ฆฌ์†Œ์Šค(์ฆ‰, ๋” ํฐ ๋กœ๋“œ)๋กœ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์ƒˆ๋กœ์šด ๋…ผ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“ˆ์„ฑ์„ ๋†’์—ฌ ์‹œ์Šคํ…œ์˜ ๊ฒฐํ•ฉ์„ ์ค„์ด๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ๊ทœ์น™์„ ๊ณ ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.์ฝ”๋”ฉ ๊ทœ์น™: ์‹œ์Šคํ…œ ์ƒ์„ฑ์—์„œ ๊ฐœ์ฒด ์ž‘์—…๊นŒ์ง€ - 2

์ด๋ฏธ์ง€ ์ถœ์ฒ˜

์‹œ์Šคํ…œ ์„ค๊ณ„ ๋‹จ๊ณ„

  1. ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ „๋ฐ˜์ ์œผ๋กœ ๋””์ž์ธํ•ฉ๋‹ˆ๋‹ค.
  2. ํ•˜์œ„ ์‹œ์Šคํ…œ/ํŒจํ‚ค์ง€๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ตฌ๋ณ„๋˜๋Š” ๋ถ€๋ถ„์„ ์ •์˜ํ•˜๊ณ  ์ด๋“ค ์‚ฌ์ด์˜ ์ƒํ˜ธ ์ž‘์šฉ ๊ทœ์น™์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  3. ํ•˜์œ„ ์‹œ์Šคํ…œ์„ ํด๋ž˜์Šค๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์˜ ์ผ๋ถ€๋ฅผ ํŠน์ • ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋‚˜๋ˆ„๊ณ  ์ด๋“ค ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  4. ํด๋ž˜์Šค๋ฅผ ๋ฉ”์„œ๋“œ๋กœ ๋‚˜๋ˆ„๊ธฐ. ํ• ๋‹น๋œ ์ฑ…์ž„์— ๋”ฐ๋ผ ํด๋ž˜์Šค์— ํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ์˜ ์™„์ „ํ•œ ์ •์˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  5. ๋ฐฉ๋ฒ• ์„ค๊ณ„. ๊ฐœ๋ณ„ ๋ฐฉ๋ฒ•์˜ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •์˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
์ผ๋ฐ˜์ ์œผ๋กœ ์ผ๋ฐ˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด ๋””์ž์ธ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ˜๋ฉด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์„ค๊ณ„์ž๋Š” ์œ„์—์„œ ์„ค๋ช…ํ•œ ์‚ฌํ•ญ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ์„ค๊ณ„์˜ ์ผ๋ฐ˜ ์›์น™ ๋ฐ ๊ฐœ๋…

๊ฒŒ์œผ๋ฅธ ์ดˆ๊ธฐํ™”. ์ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ด€์šฉ๊ตฌ์—์„œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋  ๋•Œ๊นŒ์ง€ ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ดˆ๊ธฐํ™” ํ”„๋กœ์„ธ์Šค์˜ ์†๋„๊ฐ€ ๋นจ๋ผ์ง€๊ณ  ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ์˜ ๋ถ€ํ•˜๊ฐ€ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ์ฆ‰, ๋ชจ๋“ˆํ™” ์›์น™์„ ์œ„๋ฐ˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋„ˆ๋ฌด ๋ฉ€๋ฆฌ ๊ฐ€์ ธ๊ฐ€์ง€ ๋ง์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ธฐ๋ณธ ๋ฉ”์„œ๋“œ ๋˜๋Š” ํŒฉํ† ๋ฆฌ ํด๋ž˜์Šค ์™€ ๊ฐ™์€ ์ผ๋ถ€ ํŠน์ • ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ์˜ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๋ฅผ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค . ์ข‹์€ ์ฝ”๋“œ์˜ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋Š” ๋ฐ˜๋ณต์ ์ธ ์ƒ์šฉ๊ตฌ ์ฝ”๋“œ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ์ฝ”๋“œ๋Š” ํ•„์š”ํ•  ๋•Œ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ„๋„์˜ ํด๋ž˜์Šค์— ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค.

AOP

๋˜ํ•œ ์ธก๋ฉด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์ฃผ๋ชฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์€ ํˆฌ๋ช…ํ•œ ๋…ผ๋ฆฌ๋ฅผ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐ˜๋ณต๋˜๋Š” ์ฝ”๋“œ๋ฅผ ํด๋ž˜์Šค(Aspect)์— ๋„ฃ๊ณ  ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•  ๋•Œ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํŠน์ • ์ด๋ฆ„์œผ๋กœ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์œ ํ˜•์˜ ๋ณ€์ˆ˜์— ์•ก์„ธ์Šคํ•  ๋•Œ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ์œ„์น˜๊ฐ€ ์ฆ‰์‹œ ๋ช…ํ™•ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋•Œ๋•Œ๋กœ aspect๊ฐ€ ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋งค์šฐ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ์บ์‹ฑ ๋˜๋Š” ๋กœ๊น…ํ•  ๋•Œ. ์ผ๋ฐ˜ ํด๋ž˜์Šค์— ์ถ”๊ฐ€ ๋…ผ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ  ์ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ Kent Beck์˜ ๋„ค ๊ฐ€์ง€ ๊ทœ์น™:
  1. ํ‘œํ˜„๋ ฅ โ€” ํด๋ž˜์Šค์˜ ์˜๋„๊ฐ€ ๋ช…ํ™•ํ•˜๊ฒŒ ํ‘œํ˜„๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ ์ ˆํ•œ ์ด๋ฆ„ ์ง€์ •, ์ž‘์€ ํฌ๊ธฐ, ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ ์ค€์ˆ˜๋ฅผ ํ†ตํ•ด ๋‹ฌ์„ฑ๋ฉ๋‹ˆ๋‹ค(์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜์—์„œ ๊ณ ๋ คํ•  ๊ฒƒ์ž„).
  2. ์ˆ˜์—… ๋ฐ ๋ฐฉ๋ฒ•์˜ ์ตœ์†Œ ์ˆ˜ โ€” ์ˆ˜์—…์„ ๊ฐ€๋Šฅํ•œ ํ•œ ์ž‘๊ณ  ์ข๊ฒŒ ๋งŒ๋“ค๋ ค๋Š” ์š•๊ตฌ์—์„œ ๋„ˆ๋ฌด ๋ฉ€๋ฆฌ ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ฒฐ๊ณผ์ ์œผ๋กœ ์ƒท๊ฑด ์ˆ˜์ˆ  ์•ˆํ‹ฐ ํŒจํ„ด์ด ๋ฐœ์ƒํ•จ). ์ด ์›์น™์€ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ž‘์—…์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‹œ์Šคํ…œ์„ ์ฝคํŒฉํŠธํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ณ  ๋„ˆ๋ฌด ๋ฉ€๋ฆฌ ๊ฐ€์ง€ ์•Š๋„๋ก ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.
  3. ์ค‘๋ณต ์—†์Œ โ€” ํ˜ผ๋™์„ ์ผ์œผํ‚ค๊ณ  ์ตœ์ ์ด ์•„๋‹Œ ์‹œ์Šคํ…œ ์„ค๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ค‘๋ณต ์ฝ”๋“œ๊ฐ€ ์ถ”์ถœ๋˜์–ด ๋ณ„๋„์˜ ์œ„์น˜๋กœ ์ด๋™๋ฉ๋‹ˆ๋‹ค.
  4. ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์‹คํ–‰ โ€” ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๋Š” ์‹œ์Šคํ…œ์€ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฉ”์„œ๋“œ์˜ ๋‚ด๋ถ€ ๋…ผ๋ฆฌ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ์‹œ์Šคํ…œ ๋™์ž‘๋„ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ๋‹จํ•œ

์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•  ๋•Œ ์ž˜ ์•Œ๋ ค์ง„ SOLID ์›์น™์„ ๊ณ ๋ คํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

S (๋‹จ์ผ ์ฑ…์ž„), O (์—ด๋ฆผ-๋‹ซํž˜), L (๋ฆฌ์Šค์ฝ”ํ”„ ๋Œ€์ฒด), I (์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ), D (์˜์กด์„ฑ ์—ญ์ „).

์šฐ๋ฆฌ๋Š” ๊ฐ๊ฐ์˜ ๊ฐœ๋ณ„ ์›์น™์— ์—ฐ์—ฐํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ด ๋ฌธ์„œ์˜ ๋ฒ”์œ„๋ฅผ ์•ฝ๊ฐ„ ๋ฒ—์–ด๋‚˜์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ ๋” ๋งŽ์€ ๋‚ด์šฉ์„ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค .

์ƒํ˜ธ ์ž‘์šฉ

์•„๋งˆ๋„ ์ž˜ ์„ค๊ณ„๋œ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋‹จ๊ณ„ ์ค‘ ํ•˜๋‚˜๋Š” ์ข‹์€ ์ถ”์ƒํ™”๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ž˜ ์„ค๊ณ„๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ํด๋ž˜์Šค์˜ ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์ˆจ๊ธฐ๊ณ  ๋™์‹œ์— ์„œ๋กœ ๋ช…ํ™•ํ•˜๊ฒŒ ์ผ๊ด€๋œ ๋ฉ”์„œ๋“œ ๊ทธ๋ฃน์„ ์ œ์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. SOLID ์›์น™ ์ค‘ ํ•˜๋‚˜์ธ ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ๋ฅผ โ€‹โ€‹์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ(ํด๋ž˜์Šค)๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋ถˆํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ธํ„ฐํŽ˜์ด์Šค์˜ ์œ ์ผํ•œ ์ž‘์—…(๋‹จ์ผ ์ฑ…์ž„ ์›์น™๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•จ)์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ์ตœ์†Œ ์ˆ˜์˜ ๋ฉ”์„œ๋“œ๋กœ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒฝ์šฐ ๋Œ€์‹  ๋‘์–ด ๊ฐœ์˜ ์ž‘์€ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ๋ถ€ํ’€์–ด ์˜ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค. ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ ํด๋ž˜์Šค๋Š” ๋‘˜ ์ด์ƒ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค ์ด๋ฆ„์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„์€ ํ• ๋‹น๋œ ์ž‘์—…์„ ์ตœ๋Œ€ํ•œ ์ •ํ™•ํ•˜๊ฒŒ ๋ฐ˜์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฌผ๋ก  ๊ธธ์ด๊ฐ€ ์งง์„์ˆ˜๋ก ํ˜ผ๋ž€์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ๋ฌธ์„œ ์ฃผ์„์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ธํ„ฐํŽ˜์ด์Šค ์ˆ˜์ค€์—์„œ ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ฃผ์„์€ ๊ฐ ๋ฉ”์„œ๋“œ๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…, ์ˆ˜ํ–‰ํ•  ์ธ์ˆ˜ ๋ฐ ๋ฐ˜ํ™˜ํ•  ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜์—…

์ฝ”๋”ฉ ๊ทœ์น™: ์‹œ์Šคํ…œ ์ƒ์„ฑ์—์„œ ๊ฐœ์ฒด ์ž‘์—…๊นŒ์ง€ - 3

์ด๋ฏธ์ง€ ์ถœ์ฒ˜

๋‚ด๋ถ€์ ์œผ๋กœ ํด๋ž˜์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ฐฐ์—ด๋˜์–ด ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๋”ฐ๋ผ์•ผ ํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ด€์ ๊ณผ ๊ทœ์น™์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํด๋ž˜์Šค๋Š” ํŠน์ • ์ˆœ์„œ๋กœ ๋œ ๋ณ€์ˆ˜ ๋ชฉ๋ก์œผ๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  1. ๊ณต๊ฐœ ์ •์  ์ƒ์ˆ˜;
  2. ๊ฐœ์ธ ์ •์  ์ƒ์ˆ˜;
  3. ๊ฐœ์ธ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜.
๋‹ค์Œ์œผ๋กœ ์ธ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ์€ ์ƒ์„ฑ์ž๋ถ€ํ„ฐ ์ธ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ์ƒ์„ฑ์ž ์ˆœ์œผ๋กœ ๋‹ค์–‘ํ•œ ์ƒ์„ฑ์ž๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค. ๊ทธ ๋‹ค์Œ์—๋Š” ๊ฐ€์žฅ ๊ณต๊ฐœ์ ์ธ ๋ฐฉ๋ฒ•๋ถ€ํ„ฐ ๊ฐ€์žฅ ์‚ฌ์ ์ธ ๋ฐฉ๋ฒ•๊นŒ์ง€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ œํ•œํ•˜๋ ค๋Š” ์ผ๋ถ€ ๊ธฐ๋Šฅ์˜ ๊ตฌํ˜„์„ ์ˆจ๊ธฐ๋Š” ๊ฐœ์ธ ๋ฉ”์„œ๋“œ๋Š” ๋งจ ์•„๋ž˜์— ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•™๊ธ‰ ํฌ๊ธฐ

์ด์ œ ์ˆ˜์—… ๊ทœ๋ชจ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. SOLID ์›์น™ ์ค‘ ํ•˜๋‚˜์ธ ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์„ ์ƒ๊ธฐํ•ด ๋ด…์‹œ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ฐ ๊ฐ์ฒด๊ฐ€ ๋‹จ ํ•˜๋‚˜์˜ ๋ชฉ์ (์ฑ…์ž„)์„ ๊ฐ€์ง€๋ฉฐ ๋ชจ๋“  ๋ฐฉ๋ฒ•์˜ ๋…ผ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์„ ๋‹ฌ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค๊ณ  ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ ํฌ๊ณ  ๋ถ€ํ’€๋ ค์ง„ ํด๋ž˜์Šค(์‹ค์ œ๋กœ God ๊ฐ์ฒด ์•ˆํ‹ฐ ํŒจํ„ด)๋ฅผ ํ”ผํ•˜๋ผ๊ณ  ๋งํ•˜๋ฉฐ, ํด๋ž˜์Šค์— ์˜จ๊ฐ– ์ข…๋ฅ˜์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋…ผ๋ฆฌ๊ฐ€ ํฌํ•จ๋œ ๋งŽ์€ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ํด๋ž˜์Šค๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ช‡ ๊ฐœ์˜ ๋…ผ๋ฆฌ์  ๋ถ€๋ถ„(ํด๋ž˜์Šค). ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฃผ์–ด์ง„ ํด๋ž˜์Šค์˜ ๋Œ€๋žต์ ์ธ ๋ชฉ์ ์„ ์•Œ๋ฉด ๊ฐ ๋ฉ”์„œ๋“œ์˜ ๋ชฉ์ ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค. ๋˜ํ•œ ํฌํ•จ๋œ ๋…ผ๋ฆฌ๋ฅผ ๋ฐ˜์˜ํ•ด์•ผ ํ•˜๋Š” ํด๋ž˜์Šค ์ด๋ฆ„์„ ์ฃผ์‹œํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋ฆ„์— 20๊ฐœ ์ด์ƒ์˜ ๋‹จ์–ด๊ฐ€ ํฌํ•จ๋œ ํด๋ž˜์Šค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฆฌํŒฉํ† ๋ง์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์กด์‹ฌ์ด ๊ฐ•ํ•œ ํด๋ž˜์Šค์—๋Š” ๊ทธ๋ ‡๊ฒŒ ๋งŽ์€ ๋‚ด๋ถ€ ๋ณ€์ˆ˜๊ฐ€ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๊ฐ ๋ฐฉ๋ฒ•์€ ํ•˜๋‚˜ ๋˜๋Š” ๋ช‡ ๊ฐ€์ง€์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜์—ฌ ํด๋ž˜์Šค ๋‚ด์—์„œ ๋งŽ์€ ์‘์ง‘๋ ฅ์„ ์œ ๋ฐœํ•ฉ๋‹ˆ๋‹ค(ํด๋ž˜์Šค๋Š” ํ†ตํ•ฉ๋œ ์ „์ฒด์—ฌ์•ผ ํ•˜๋ฏ€๋กœ ์ •ํ™•ํžˆ ๊ทธ๋ž˜์•ผ ํ•ฉ๋‹ˆ๋‹ค). ๊ฒฐ๊ณผ์ ์œผ๋กœ ํ•™๊ธ‰์˜ ๊ฒฐ์†๋ ฅ์„ ๋†’์ด๋ฉด ํ•™๊ธ‰ ๊ทœ๋ชจ๊ฐ€ ์ค„์–ด๋“ค๊ณ  ๋‹น์—ฐํžˆ ํ•™๊ธ‰ ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚œ๋‹ค. ํŠน์ • ๋Œ€๊ทœ๋ชจ ์ž‘์—…์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํด๋ž˜์Šค ํŒŒ์ผ์„ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ์ด๊ฒƒ์ด ์„ฑ๊ฐ€์‹  ์ผ์ž…๋‹ˆ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค๋„ ๊ฐ ํด๋ž˜์Šค๋Š” ๋‹ค๋ฅธ ํด๋ž˜์Šค์™€ ์ตœ์†Œํ•œ์œผ๋กœ ๊ด€๋ จ๋˜์–ด์•ผ ํ•˜๋Š” ์ž‘์€ ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฉ๋ฆฌ๋Š” ํด๋ž˜์Šค์— ๋กœ์ง์„ ์ถ”๊ฐ€ํ•  ๋•Œ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๋ณ€๊ฒฝ ํšŸ์ˆ˜๋ฅผ ์ค„์—ฌ์ค๋‹ˆ๋‹ค. ๊ฐ ๋ฐฉ๋ฒ•์€ ๊ทธ๋“ค ์ค‘ ํ•˜๋‚˜ ๋˜๋Š” ๋ช‡ ๊ฐœ์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜์—ฌ ํด๋ž˜์Šค ๋‚ด์—์„œ ๋งŽ์€ ์‘์ง‘๋ ฅ์„ ์œ ๋ฐœํ•ฉ๋‹ˆ๋‹ค(ํด๋ž˜์Šค๋Š” ํ†ตํ•ฉ๋œ ์ „์ฒด์—ฌ์•ผ ํ•˜๋ฏ€๋กœ ์ •ํ™•ํžˆ ๊ทธ๋ž˜์•ผ ํ•ฉ๋‹ˆ๋‹ค). ๊ฒฐ๊ณผ์ ์œผ๋กœ ํ•™๊ธ‰์˜ ๊ฒฐ์†๋ ฅ์„ ๋†’์ด๋ฉด ํ•™๊ธ‰ ๊ทœ๋ชจ๊ฐ€ ์ค„์–ด๋“ค๊ณ  ๋‹น์—ฐํžˆ ํ•™๊ธ‰ ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚œ๋‹ค. ํŠน์ • ๋Œ€๊ทœ๋ชจ ์ž‘์—…์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํด๋ž˜์Šค ํŒŒ์ผ์„ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ์ด๊ฒƒ์ด ์„ฑ๊ฐ€์‹  ์ผ์ž…๋‹ˆ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค๋„ ๊ฐ ํด๋ž˜์Šค๋Š” ๋‹ค๋ฅธ ํด๋ž˜์Šค์™€ ์ตœ์†Œํ•œ์œผ๋กœ ๊ด€๋ จ๋˜์–ด์•ผ ํ•˜๋Š” ์ž‘์€ ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฉ๋ฆฌ๋Š” ํด๋ž˜์Šค์— ๋กœ์ง์„ ์ถ”๊ฐ€ํ•  ๋•Œ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๋ณ€๊ฒฝ ํšŸ์ˆ˜๋ฅผ ์ค„์—ฌ์ค๋‹ˆ๋‹ค. ๊ฐ ๋ฐฉ๋ฒ•์€ ๊ทธ๋“ค ์ค‘ ํ•˜๋‚˜ ๋˜๋Š” ๋ช‡ ๊ฐœ์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜์—ฌ ํด๋ž˜์Šค ๋‚ด์—์„œ ๋งŽ์€ ์‘์ง‘๋ ฅ์„ ์œ ๋ฐœํ•ฉ๋‹ˆ๋‹ค(ํด๋ž˜์Šค๋Š” ํ†ตํ•ฉ๋œ ์ „์ฒด์—ฌ์•ผ ํ•˜๋ฏ€๋กœ ์ •ํ™•ํžˆ ๊ทธ๋ž˜์•ผ ํ•ฉ๋‹ˆ๋‹ค). ๊ฒฐ๊ณผ์ ์œผ๋กœ ํ•™๊ธ‰์˜ ๊ฒฐ์†๋ ฅ์„ ๋†’์ด๋ฉด ํ•™๊ธ‰ ๊ทœ๋ชจ๊ฐ€ ์ค„์–ด๋“ค๊ณ  ๋‹น์—ฐํžˆ ํ•™๊ธ‰ ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚œ๋‹ค. ํŠน์ • ๋Œ€๊ทœ๋ชจ ์ž‘์—…์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํด๋ž˜์Šค ํŒŒ์ผ์„ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ์ด๊ฒƒ์ด ์„ฑ๊ฐ€์‹  ์ผ์ž…๋‹ˆ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค๋„ ๊ฐ ํด๋ž˜์Šค๋Š” ๋‹ค๋ฅธ ํด๋ž˜์Šค์™€ ์ตœ์†Œํ•œ์œผ๋กœ ๊ด€๋ จ๋˜์–ด์•ผ ํ•˜๋Š” ์ž‘์€ ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฉ๋ฆฌ๋Š” ํด๋ž˜์Šค์— ๋กœ์ง์„ ์ถ”๊ฐ€ํ•  ๋•Œ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๋ณ€๊ฒฝ ํšŸ์ˆ˜๋ฅผ ์ค„์—ฌ์ค๋‹ˆ๋‹ค. ์‘์ง‘๋ ฅ์€ ํ•™๊ธ‰ ๊ทœ๋ชจ์˜ ์ถ•์†Œ๋กœ ์ด์–ด์ง€๊ณ  ๋‹น์—ฐํžˆ ํ•™๊ธ‰์˜ ์ˆ˜๋Š” ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ๋Œ€๊ทœ๋ชจ ์ž‘์—…์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํด๋ž˜์Šค ํŒŒ์ผ์„ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ์ด๊ฒƒ์ด ์„ฑ๊ฐ€์‹  ์ผ์ž…๋‹ˆ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค๋„ ๊ฐ ํด๋ž˜์Šค๋Š” ๋‹ค๋ฅธ ํด๋ž˜์Šค์™€ ์ตœ์†Œํ•œ์œผ๋กœ ๊ด€๋ จ๋˜์–ด์•ผ ํ•˜๋Š” ์ž‘์€ ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฉ๋ฆฌ๋Š” ํด๋ž˜์Šค์— ๋กœ์ง์„ ์ถ”๊ฐ€ํ•  ๋•Œ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๋ณ€๊ฒฝ ํšŸ์ˆ˜๋ฅผ ์ค„์—ฌ์ค๋‹ˆ๋‹ค. ์‘์ง‘๋ ฅ์€ ํ•™๊ธ‰ ๊ทœ๋ชจ์˜ ์ถ•์†Œ๋กœ ์ด์–ด์ง€๊ณ  ๋‹น์—ฐํžˆ ํ•™๊ธ‰์˜ ์ˆ˜๋Š” ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ๋Œ€๊ทœ๋ชจ ์ž‘์—…์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํด๋ž˜์Šค ํŒŒ์ผ์„ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ์ด๊ฒƒ์ด ์„ฑ๊ฐ€์‹  ์ผ์ž…๋‹ˆ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค๋„ ๊ฐ ํด๋ž˜์Šค๋Š” ๋‹ค๋ฅธ ํด๋ž˜์Šค์™€ ์ตœ์†Œํ•œ์œผ๋กœ ๊ด€๋ จ๋˜์–ด์•ผ ํ•˜๋Š” ์ž‘์€ ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฉ๋ฆฌ๋Š” ํด๋ž˜์Šค์— ๋กœ์ง์„ ์ถ”๊ฐ€ํ•  ๋•Œ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๋ณ€๊ฒฝ ํšŸ์ˆ˜๋ฅผ ์ค„์—ฌ์ค๋‹ˆ๋‹ค.

์‚ฌ๋ฌผ

์บก์Šํ™”

์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” ๋จผ์ € OOP ์›์น™์ธ ์บก์Šํ™”์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ตฌํ˜„์„ ์ˆจ๊ธฐ๋Š” ๊ฒƒ์€ ๋ณ€์ˆ˜๋ฅผ ๊ฒฉ๋ฆฌํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค(๊ฐœ๋ณ„ ๋ฉ”์„œ๋“œ, ๊ฒŒํ„ฐ ๋ฐ ์„ธํ„ฐ๋ฅผ ํ†ตํ•œ ์•ก์„ธ์Šค๋ฅผ ์ƒ๊ฐ ์—†์ด ์ œํ•œํ•˜๋Š” ๊ฒƒ์€ ์บก์Šํ™”์˜ ์ „์ฒด ์ง€์ ์ด ์†์‹ค๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค). ์•ก์„ธ์Šค ์ˆจ๊ธฐ๊ธฐ๋Š” ์ถ”์ƒํ™”๋ฅผ ํ˜•์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํด๋ž˜์Šค๋Š” ๋ฐ์ดํ„ฐ ์ž‘์—…์— ์‚ฌ์šฉํ•˜๋Š” ๊ณต์œ ๋œ ๊ตฌ์ฒด์ ์ธ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ์ž๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ด ๋ฐ์ดํ„ฐ๋กœ ์ž‘์—…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •ํ™•ํžˆ ์•Œ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ž‘๋™ํ•˜๊ณ  ๊ทธ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ๋ฉ”ํ…Œ๋ฅด์˜ ๋ฒ•์น™

Demeter์˜ ๋ฒ•์น™๋„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Demeter๋Š” ํด๋ž˜์Šค ๋ฐ ๋ฉ”์„œ๋“œ ์ˆ˜์ค€์—์„œ ๋ณต์žก์„ฑ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์ž‘์€ ๊ทœ์น™ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. Car ๊ฐ์ฒด๊ฐ€ ์žˆ๊ณ  ์—ฌ๊ธฐ์— move(Object arg1, Object arg2) ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค . ๋ฐ๋ฉ”ํ…Œ๋ฅด์˜ ๋ฒ•์น™์— ๋”ฐ๋ฅด๋ฉด ์ด ๋ฉ”์„œ๋“œ๋Š” ๋‹ค์Œ์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.
  • Car ๊ฐ์ฒด ์ž์ฒด ์˜ ๋ฉ”์„œ๋“œ (์ฆ‰, "this" ๊ฐ์ฒด);
  • move ๋ฉ”์†Œ๋“œ ๋‚ด์—์„œ ์ƒ์„ฑ๋œ ๊ฐ์ฒด์˜ ๋ฉ”์†Œ๋“œ ;
  • ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ( arg1 , arg2 );
  • ๋‚ด๋ถ€ Car ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ(๋‹ค์‹œ "this").
์ฆ‰, ๋ฐ๋ฉ”ํ…Œ๋ฅด์˜ ๋ฒ•์น™์€ ๋ถ€๋ชจ๊ฐ€ ์•„์ด์—๊ฒŒ "์นœ๊ตฌ์™€๋Š” ์ด์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‚ฏ์„  ์‚ฌ๋žŒ๊ณผ๋Š” ์ด์•ผ๊ธฐํ•  ์ˆ˜ ์—†๋‹ค"๊ณ  ๋งํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋Š” ๊ด€๋ จ ์š”์†Œ์˜ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค. ๊ฐœ์ฒด๋ฅผ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ๊ณ ๋ คํ•  ๋•Œ ๋ฉ”์„œ๋“œ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์š”์†Œ ์ง‘ํ•ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฉ”์„œ๋“œ์˜ ์กด์žฌ๋Š” ์•”์‹œ์ ์œผ๋กœ ๊ฐ€์ •๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋Š” ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ž‘์—…(์ฒ˜๋ฆฌ)ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ธ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ๊ฐœ์ฒด์™€์˜ ์ฃผ์š” ์ฐจ์ด์ ์€ ์ผ๋ฐ˜ ๊ฐœ์ฒด๋Š” ์•”๋ฌต์ ์œผ๋กœ ์กด์žฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •๋˜๋Š” ๋ฐ์ดํ„ฐ ์š”์†Œ์— ๋Œ€ํ•ด ์ž‘๋™ํ•˜๋Š” ๋ฉ”์„œ๋“œ ๋ชจ์Œ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ดํ•ดํ–ˆ๋‚˜์š”? ์ผ๋ฐ˜ ๊ฐœ์ฒด์˜ ์ฃผ์š” ์ธก๋ฉด์€ ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ๋ณ€์ˆ˜๋Š” ์˜ฌ๋ฐ”๋ฅธ ์ž‘๋™์„ ์šฉ์ดํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์—๋Š” ์—ฌ๊ธฐ์— ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ์š”์†Œ๋กœ ์ž‘์—…์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์˜ ํ•œ ์œ ํ˜•์€ ๋ฐ์ดํ„ฐ ์ „์†ก ๊ฐœ์ฒด(DTO)์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…, ์†Œ์ผ“์—์„œ ๋ฉ”์‹œ์ง€ ๊ตฌ๋ฌธ ๋ถ„์„ ๋“ฑ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ณต์šฉ ๋ณ€์ˆ˜ ๋ฐ ๋ฉ”์„œ๋“œ(๋˜๋Š” ์ฝ๊ธฐ/์“ฐ๊ธฐ๋ฅผ ์œ„ํ•œ ๋ฉ”์„œ๋“œ๋งŒ ์žˆ์Œ)๊ฐ€ ์—†๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์˜ค๋žœ ๊ธฐ๊ฐ„ ๋™์•ˆ ์ด๋Ÿฌํ•œ ๊ฐœ์ฒด์— ์ €์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฑฐ์˜ ์ฆ‰์‹œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ž‘๋™ํ•˜๋Š” ์—”ํ„ฐํ‹ฐ ์œ ํ˜•์œผ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค. ์—”ํ„ฐํ‹ฐ๋„ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ด์ง€๋งŒ ๊ทธ ๋ชฉ์ ์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๋‹ค์–‘ํ•œ ์ˆ˜์ค€์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋…ผ๋ฆฌ์— ์ฐธ์—ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. DTO์˜ ๋ชฉ์ ์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. DTO์˜ ์˜ˆ: ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ด๊ธฐ๋„ ํ•˜์ง€๋งŒ ๊ทธ ๋ชฉ์ ์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๋‹ค์–‘ํ•œ ์ˆ˜์ค€์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋…ผ๋ฆฌ์— ์ฐธ์—ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. DTO์˜ ๋ชฉ์ ์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. DTO์˜ ์˜ˆ: ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ด๊ธฐ๋„ ํ•˜์ง€๋งŒ ๊ทธ ๋ชฉ์ ์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๋‹ค์–‘ํ•œ ์ˆ˜์ค€์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋…ผ๋ฆฌ์— ์ฐธ์—ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. DTO์˜ ๋ชฉ์ ์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. DTO์˜ ์˜ˆ:

@Setter
@Getter
@NoArgsConstructor
public class UserDto {
    private long id;
    private String firstName;
    private String lastName;
    private String email;
    private String password;
}
๋ชจ๋“  ๊ฒƒ์ด ์ถฉ๋ถ„ํžˆ ๋ช…ํ™•ํ•ด ๋ณด์ด์ง€๋งŒ ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” ์žก์ข…์˜ ์กด์žฌ์— ๋Œ€ํ•ด ๋ฐฐ์›๋‹ˆ๋‹ค. ํ•˜์ด๋ธŒ๋ฆฌ๋“œ๋Š” ์ค‘์š”ํ•œ ๋…ผ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , ๋‚ด๋ถ€ ์š”์†Œ๋ฅผ ์ €์žฅํ•˜๊ณ , ์ ‘๊ทผ์ž(get/set) ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐœ์ฒด๋Š” ์ง€์ €๋ถ„ํ•˜๊ณ  ์ƒˆ ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์ด ๋ฌด์—‡์„ ์œ„ํ•œ ๊ฒƒ์ธ์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๊ฒƒ๋“ค์„ ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค โ€” ์š”์†Œ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋…ผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๊นŒ?

๋ณ€์ˆ˜ ์ƒ์„ฑ ์›๋ฆฌ

๋ณ€์ˆ˜์— ๋Œ€ํ•ด ์กฐ๊ธˆ ์ƒ๊ฐํ•ด ๋ด…์‹œ๋‹ค. ๋ณด๋‹ค ๊ตฌ์ฒด์ ์œผ๋กœ ์ƒ์„ฑํ•  ๋•Œ ์–ด๋–ค ์›์น™์ด ์ ์šฉ๋˜๋Š”์ง€ ์ƒ๊ฐํ•ด ๋ด…์‹œ๋‹ค.
  1. ์ด์ƒ์ ์œผ๋กœ๋Š” ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ง์ „์— ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๋งŒ๋“ค๊ณ  ์žŠ์–ด๋ฒ„๋ฆฌ์ง€ ๋งˆ์‹ญ์‹œ์˜ค).
  2. ๊ฐ€๋Šฅํ•˜๋ฉด ๋ณ€์ˆ˜๋ฅผ ์ตœ์ข… ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•˜์—ฌ ์ดˆ๊ธฐํ™” ํ›„ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋„๋ก ํ•˜์‹ญ์‹œ์˜ค.
  3. ์ผ์ข…์˜ for ๋ฃจํ”„์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์นด์šดํ„ฐ ๋ณ€์ˆ˜๋ฅผ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ฆ‰, ์ œ๋กœํ™”ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ๋…ผ๋ฆฌ๊ฐ€ ๊นจ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ์ƒ์„ฑ์ž์—์„œ ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  5. ์ฐธ์กฐ๊ฐ€ ์žˆ๋Š” ๊ฐœ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜( new SomeObject() ) ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฐœ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฐœ์ฒด๊ฐ€ ์‚ฌ์šฉ๋œ ํ›„ ๋‹ค์Œ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘ ์ฃผ๊ธฐ ๋™์•ˆ ์‚ญ์ œ๋˜๊ณ  ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๊ฐ€ ๋‚ญ๋น„๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค.
  6. ๋ณ€์ˆ˜์˜ ์ˆ˜๋ช…(๋ณ€์ˆ˜ ์ƒ์„ฑ๊ณผ ๋งˆ์ง€๋ง‰ ์ฐธ์กฐ ์‹œ๊ฐ„ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ)์„ ๊ฐ€๋Šฅํ•œ ํ•œ ์งง๊ฒŒ ์œ ์ง€ํ•˜์‹ญ์‹œ์˜ค.
  7. ๋ฃจํ”„๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฉ”์„œ๋“œ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์ด ์•„๋‹ˆ๋ผ ๋ฃจํ”„ ์ง์ „์— ๋ฃจํ”„์— ์‚ฌ์šฉ๋œ ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
  8. ํ•ญ์ƒ ๊ฐ€์žฅ ์ œํ•œ๋œ ๋ฒ”์œ„์—์„œ ์‹œ์ž‘ํ•˜๊ณ  ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค(๋ณ€์ˆ˜๋ฅผ ๊ฐ€๋Šฅํ•œ ํ•œ ๋กœ์ปฌ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•จ).
  9. ๊ฐ ๋ณ€์ˆ˜๋Š” ํ•œ ๊ฐ€์ง€ ๋ชฉ์ ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
  10. ์ˆจ๊ฒจ์ง„ ๋ชฉ์ ์ด ์žˆ๋Š” ๋ณ€์ˆ˜, ์˜ˆ๋ฅผ ๋“ค์–ด ๋‘ ์ž‘์—… ์‚ฌ์ด์˜ ๋ณ€์ˆ˜ ๋ถ„ํ• ์„ ํ”ผํ•˜์‹ญ์‹œ์˜ค. ์ด๋Š” ํ•ด๋‹น ์œ ํ˜•์ด ๊ทธ ์ค‘ ํ•˜๋‚˜๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

ํ–‰๋™ ์–‘์‹

์ฝ”๋”ฉ ๊ทœ์น™: ์‹œ์Šคํ…œ ์ƒ์„ฑ์—์„œ ๊ฐœ์ฒด ์ž‘์—…๊นŒ์ง€ - 4

์˜ํ™” "์Šคํƒ€์›Œ์ฆˆ: ์—ํ”ผ์†Œ๋“œ III - ์‹œ์Šค์˜ ๋ณต์ˆ˜"(2005)์—์„œ

์šฐ๋ฆฌ ๋…ผ๋ฆฌ์˜ ๊ตฌํ˜„, ์ฆ‰ ๋ฉ”์†Œ๋“œ๋กœ ์ง์ ‘ ์ง„ํ–‰ํ•ฉ์‹œ๋‹ค.
  1. ๊ทœ์น™ #1 - ์ปดํŒฉํŠธํ•จ. ์ด์ƒ์ ์œผ๋กœ๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ 20์ค„์„ ์ดˆ๊ณผํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๊ณต์šฉ ๋ฉ”์„œ๋“œ๊ฐ€ ํฌ๊ฒŒ "์ฆ๊ฐ€"ํ•˜๋Š” ๊ฒฝ์šฐ ๋…ผ๋ฆฌ๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ณ„๋„์˜ ์ „์šฉ ๋ฉ”์„œ๋“œ๋กœ ์ด๋™ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  2. ๊ทœ์น™ #2 โ€” if , else , while ๋ฐ ๊ธฐํƒ€ ๋ฌธ์— ๋ธ”๋ก์ด ๋งŽ์ด ์ค‘์ฒฉ๋˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์ค‘์ฒฉ์ด ๋งŽ์œผ๋ฉด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ด ํฌ๊ฒŒ ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” 2๊ฐœ ์ดํ•˜์˜ ์ค‘์ฒฉ๋œ {} ๋ธ”๋ก์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค .

    ๋˜ํ•œ ์ด๋Ÿฌํ•œ ๋ธ”๋ก์˜ ์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ณ  ๋‹จ์ˆœํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•ฉ๋‹ˆ๋‹ค.

  3. ๊ทœ์น™ #3 โ€” ๋ฉ”์„œ๋“œ๋Š” ํ•˜๋‚˜์˜ ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ฉ”์„œ๋“œ๊ฐ€ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ณต์žกํ•œ ๋…ผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฉ”์„œ๋“œ๋ฅผ ํ•˜์œ„ ๋ฉ”์„œ๋“œ๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ฉ”์„œ๋“œ ์ž์ฒด๋Š” ์˜ฌ๋ฐ”๋ฅธ ์ˆœ์„œ๋กœ ๋‹ค๋ฅธ ๋ชจ๋“  ์ž‘์—…์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ธ ํŒŒ์‚ฌ๋“œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

    ํ•˜์ง€๋งŒ ์ž‘์—…์ด ๋„ˆ๋ฌด ๋‹จ์ˆœํ•ด์„œ ๋ณ„๋„์˜ ๋ฉ”์„œ๋“œ์— ๋„ฃ์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”? ์‚ฌ์‹ค, ๋•Œ๋กœ๋Š” ์ฐธ์ƒˆ์—๊ฒŒ ๋Œ€ํฌ๋ฅผ ๋ฐœ์‚ฌํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ ์ž‘์€ ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

    • ๋” ๋‚˜์€ ์ฝ”๋“œ ์ดํ•ด;
    • ๋ฐฉ๋ฒ•์€ ๊ฐœ๋ฐœ์ด ์ง„ํ–‰๋จ์— ๋”ฐ๋ผ ๋” ๋ณต์žกํ•ด์ง€๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฉ๋ฒ•์ด ๊ฐ„๋‹จํ•˜๋ฉด ๊ธฐ๋Šฅ์„ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์กฐ๊ธˆ ๋” ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    • ๊ตฌํ˜„ ์„ธ๋ถ€ ์ •๋ณด๋Š” ์ˆจ๊ฒจ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋” ์‰ฌ์šด ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ;
    • ๋ณด๋‹ค ์•ˆ์ •์ ์ธ ์ฝ”๋“œ.

  4. ์Šคํ…๋‹ค์šด ๊ทœ์น™ โ€” ์ฝ”๋“œ๋Š” ์œ„์—์„œ ์•„๋ž˜๋กœ ์ฝ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ๋‚ฎ๊ฒŒ ์ฝ์„์ˆ˜๋ก ๋…ผ๋ฆฌ๋ฅผ ๋” ๊นŠ์ด ํŒŒ๊ณ ๋“ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ ๋ฐ˜๋Œ€๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๋” ๋†’์ด ์˜ฌ๋ผ๊ฐˆ์ˆ˜๋ก ๋ฐฉ๋ฒ•์ด ๋” ์ถ”์ƒ์ ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด switch ๋ฌธ์€ ๊ฐ„๊ฒฐํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์ง€๋งŒ switch๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ๊ฐ€๋Šฅํ•œ ํ•œ ๊ฐ€์žฅ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ๋ฉ”์„œ๋“œ๋กœ ์ „ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  5. ๋ฉ”์„œ๋“œ ์ธ์ˆ˜ โ€” ์ด์ƒ์ ์ธ ์ˆซ์ž๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด์ƒ์ ์œผ๋กœ๋Š” ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค :) ํ•˜์ง€๋งŒ ์ •๋ง ๊ทธ๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚ ๊นŒ์š”? ์ฆ‰, ์ธ์ˆ˜๊ฐ€ ์ ์„์ˆ˜๋ก ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ณ  ํ…Œ์ŠคํŠธํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•œ ํ•œ ์ ์€ ์ˆ˜์˜ ์ธ์ˆ˜๋ฅผ ๊ฐ–๋„๋ก ๋…ธ๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ™•์‹คํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋งŽ์€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์˜ˆ์ƒํ•ด ๋ณด์‹ญ์‹œ์˜ค.

  6. ๋˜ํ•œ ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ถ€์šธ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๊ทธ ์ž์ฒด๋กœ ๋ฉ”์†Œ๋“œ๊ฐ€ ๋‘˜ ์ด์ƒ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•จ์„ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค(์ฐธ์ด๋ฉด ํ•œ ๊ฐ€์ง€ ์ž‘์—… ์ˆ˜ํ–‰, ๊ฑฐ์ง“์ด๋ฉด ๋‹ค๋ฅธ ์ž‘์—… ์ˆ˜ํ–‰). ์œ„์—์„œ ์“ด ๊ฒƒ์ฒ˜๋Ÿผ ์ด๊ฒƒ์€ ์ข‹์ง€ ์•Š์œผ๋ฉฐ ๊ฐ€๋Šฅํ•˜๋ฉด ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  7. ๋ฉ”์„œ๋“œ์— ๋งŽ์€ ์ˆ˜์˜ ์ž…๋ ฅ ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ(๊ทน๋‹จ์ ์ธ ๊ฐ’์€ 7์ด์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” 2-3๊ฐœ ์ดํ›„์— ์ƒ๊ฐํ•ด์•ผ ํ•จ) ์ธ์ˆ˜ ์ค‘ ์ผ๋ถ€๋ฅผ ๋ณ„๋„์˜ ๊ฐœ์ฒด๋กœ ๊ทธ๋ฃนํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  8. ์œ ์‚ฌํ•œ(์˜ค๋ฒ„๋กœ๋“œ๋œ) ๋ฉ”์„œ๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋Š” ๊ฒฝ์šฐ ์œ ์‚ฌํ•œ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๋™์ผํ•œ ์ˆœ์„œ๋กœ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฐ€๋…์„ฑ๊ณผ ์‚ฌ์šฉ์„ฑ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

  9. ๋ฉ”์†Œ๋“œ์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋ชจ๋‘ ์‚ฌ์šฉ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์™œ ํ•„์š”ํ•œ๊ฐ€์š”? ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ž˜๋ผ๋‚ธ ๋‹ค์Œ ์™„๋ฃŒํ•˜์‹ญ์‹œ์˜ค.

  10. try/catch๋Š” ๋ณธ์งˆ์ ์œผ๋กœ ๊ทธ๋‹ค์ง€ ์ข‹์•„ ๋ณด์ด์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ณ„๋„์˜ ์ค‘๊ฐ„ ๋ฉ”์„œ๋“œ(์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ฉ”์„œ๋“œ)๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

    
    public void exceptionHandling(SomeObject obj) {
        try {  
            someMethod(obj);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    

์œ„์—์„œ ์ค‘๋ณต ์ฝ”๋“œ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ–ˆ์ง€๋งŒ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋ฐ˜๋ณตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ๋ฐ˜๋ณต๋˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ๋‘ ๊ฐœ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ๋ณ„๋„์˜ ๋ฉ”์„œ๋“œ๋กœ ์˜ฎ๊ฒจ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฉ”์„œ๋“œ์™€ ํด๋ž˜์Šค๊ฐ€ ๋ชจ๋‘ ๋” ๊ฐ„๊ฒฐํ•ด์ง‘๋‹ˆ๋‹ค. ์ด๋ฆ„์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ทœ์น™์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค, ๋ฉ”์„œ๋“œ ๋ฐ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์„ ์ ์ ˆํ•˜๊ฒŒ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ๊ธฐ์‚ฌ์˜ ๋‹ค์Œ ๋ถ€๋ถ„์—์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์˜ค๋Š˜์€ ๊ทธ๊ฒŒ ์ „๋ถ€์ž…๋‹ˆ๋‹ค.
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION