DevLog ๐Ÿ˜ถ

[์šฐํ…Œ์ฝ” 5๊ธฐ] ๋ ˆ๋ฒจ 1 ๋ ˆ๋ฒจ ์ธํ„ฐ๋ทฐ ์ •๋ฆฌ ๋ฐ ๊ฐ์ • ํšŒ๊ณ  ๋ณธ๋ฌธ

์šฐ์•„ํ•œํ…Œํฌ์ฝ”์Šค/๋ ˆ๋ฒจ 1

[์šฐํ…Œ์ฝ” 5๊ธฐ] ๋ ˆ๋ฒจ 1 ๋ ˆ๋ฒจ ์ธํ„ฐ๋ทฐ ์ •๋ฆฌ ๋ฐ ๊ฐ์ • ํšŒ๊ณ 

dolmeng2 2023. 4. 6. 18:02

โœ”๏ธ ๋ ˆ๋ฒจ ์ธํ„ฐ๋ทฐ๋ž€?

๋“œ๋””์–ด ๋ ˆ๋ฒจ 1 ๋ฐฉํ•™ ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ฐ€๋ ธ๋˜ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…์˜ ๋งˆ์ง€๋ง‰, ๋ ˆ๋ฒจ๋กœ๊ทธ๋ฅผ ์ •๋ฆฌํ•˜๊ณ ์ž ํ•œ๋‹ค.
์šฐํ…Œ์ฝ”์—์„œ๋Š” ๋งค ๋ ˆ๋ฒจ์ด ๋๋‚˜๋ฉด ์กฐ๋ณ„๋กœ '๋ ˆ๋ฒจ ์ธํ„ฐ๋ทฐ'๋ผ๋Š” ๊ฒƒ์„ ์ง„ํ–‰ํ•œ๋‹ค.
๋ ˆ๋ฒจ ์ธํ„ฐ๋ทฐ๋Š” ๊ฐ ๋ ˆ๋ฒจ์—์„œ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ธํ„ฐ๋ทฐ ํ˜•์‹์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๋งํ•˜๊ธฐ ํ™œ๋™์œผ๋กœ์„œ, ์ž์‹ ์ด ์•Œ๊ณ  ์žˆ๋Š” ์ง€์‹์„ ๋ง๋กœ ํ‘œํ˜„ํ•˜๋Š” ์—ฐ์Šต์„ ํ†ตํ•ด ๋ฉ”ํƒ€์ธ์ง€๋ฅผ ๊ธฐ๋ฅผ ์ˆ˜ ์žˆ๋‹ค. (์ถ”ํ›„ ๊ธฐ์—…์˜ ๊ธฐ์ˆ  ๋ฉด์ ‘, ์ธํ„ฐ๋ทฐ์— ๋Œ€ํ•œ ๋Œ€๋น„๋ผ๊ณ  ๋ด๋„ ์ข‹๋‹ค ๐Ÿ˜Š)
 
๊ทธ๋ฃน๋‹น 6-7๋ช…์ด ์ง„ํ–‰ํ•˜๋ฉฐ, 1๋ช…์˜ ์ธํ„ฐ๋ทฐ์–ด, 3๋ช…์˜ ์ธํ„ฐ๋ทฐ์ด, 2-3๋ช…์˜ ์˜ต์ €๋ฒ„์™€ ํ•จ๊ป˜ ์ง„ํ–‰ํ•œ๋‹ค.
ํ•œ ์‚ฌ๋žŒ๋‹น ์ด ์ธํ„ฐ๋ทฐ 20๋ถ„, ๊ทธ๋ฆฌ๊ณ  ํ”ผ๋“œ๋ฐฑ 10๋ถ„์”ฉ ์ง„ํ–‰ํ•˜๋Š”๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ์ด ์‹œ๊ฐ„์ด ๋˜๊ฒŒ ๋น ๋ฅด๋‹ค.
 
๋ ˆ๋ฒจ ์ธํ„ฐ๋ทฐ๋Š” ์ด 2์ผ๊ฐ„ ์ง„ํ–‰๋˜์—ˆ์œผ๋ฉฐ, ๋‚˜๋Š” ๋‘ ๋ฒˆ์งธ ๋‚ ์— ์ง„ํ–‰ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฒซ ๋‚ ์€ ์žฌํƒ์„ ํ–ˆ๋‹ค.
์ฝ”์น˜๋Š” ๋ธŒ๋ผ์šด์ด์—ˆ์œผ๋ฉฐ, ๊ฐ™์ด ์ง„ํ–‰ํ•  ํฌ๋ฃจ๋Š” ๋ผ์˜จ, ์•„๋ฒจ, ์ด๋ ˆ, ๋ˆ„๋ˆ„, ํด๋กœ, ํ—ˆ๋ธŒ์˜€๋‹ค.
 

Lv1 - ๋ ˆ๋ฒจ ๋กœ๊ทธ

SOLID (๊ฐ์ฒด์ง€ํ–ฅ 5๋Œ€ ์›์น™)

cl8d.notion.site

์ด๊ฑฐ๋Š” ์ œ์ถœํ–ˆ๋˜ ๋ ˆ๋ฒจ๋กœ๊ทธ ๋งํฌ์ด๋‹ค. ๋ ˆ๋ฒจ 1์˜ ๋ฏธ์…˜์—์„œ ์ง„ํ–‰ํ–ˆ๋˜ ํ•™์Šต + ๊ฐœ์ธ์ ์œผ๋กœ ๊ณต๋ถ€ํ–ˆ๋˜ ๋‚ด์šฉ๋“ค์— ๋Œ€ํ•ด ์ž‘์„ฑํ•˜์˜€๋‹ค.
 


โœ”๏ธ ๋ ˆ๋ฒจ๋กœ๊ทธ ์ค€๋น„ํ•˜๊ธฐ

์•„๋ž˜๋Š” ๋ ˆ๋ฒจ ๋กœ๊ทธ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ด๋‹ค. ์•„๋งˆ๋ž€์Šค์™€ ๋ฐ”๋ก  ๋•๋ถ„์— ์กฐ๊ธˆ ๋” ์ˆ˜์›”ํ•˜๊ฒŒ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค ๐Ÿ™‡โ€โ™€๏ธ
๋ฐ•์Šค ์•ˆ์— ์จ์žˆ๋Š” ๋ถ€๋ถ„์€ ์„œ๋กœ ์งˆ๋ฌธ์„ ์ฃผ๊ณ ๋ฐ›์•˜์„ ๋•Œ ๋‚ด๊ฐ€ ์ •๋ฆฌํ•œ ๋‹ต๋ณ€์ด๋‹ค. 
์ด๊ฒƒ์ €๊ฒƒ ์ฐพ์•„๋ณด๋ฉด์„œ ์ •๋ฆฌํ•œ ๋‚ด์šฉ + ๋‚ด ๊ฐœ์ธ์  ์ƒ๊ฐ์ด๋ผ ๋‹ค์†Œ ๋ถ€์ •ํ™•ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๊ธฐ๋ก์šฉ์œผ๋กœ ๋‚จ๊ฒจ๋‘๊ณ ์ž ํ•œ๋‹ค.
 
 

๐Ÿ’ฌ SOLID (๊ฐ์ฒด์ง€ํ–ฅ 5๋Œ€ ์›์น™)

- SRP (๋‹จ์ผ ์ฑ…์ž„ ์›์น™)
๊ฐ์ฒด๋Š” ๋‹จ ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.
๋ณ€ํ™”๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋˜์–ด์„œ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์›Œ์ง„๋‹ค.

- OCP (๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™) โ†’ ์ถ”์ƒํ™”, ๋‹คํ˜•์„ฑ
ํ™•์žฅ์—๋Š” ์—ด๋ ค ์žˆ๊ณ , ๋ณ€๊ฒฝ์—๋Š” ๋‹ซํ˜€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

Q. Crystal Ball Problem์ด ๋ญ”๊ฐ€์š”?

OCP๋Š” ๋ณ€๊ฒฝ์—๋Š” ๋‹ซํ˜€์žˆ์ง€๋งŒ, ํ™•์žฅ์— ์—ด๋ ค์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฑด๋ฐ์š”! 
CBP์˜ ๊ฒฝ์šฐ ํ™•์žฅ์—๋Š” ์—ด๋ ค์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ์‹ค์ œ๋กœ OCP๋ฅผ ์™„์ „ํ•˜๊ฒŒ ๋งŒ์กฑํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?์— ๋Œ€ํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค! 
์‹ค์ œ ๊ตฌํ˜„ ์‹œ์—๋Š” ํ˜„์žฌ ํ”„๋กœ๊ทธ๋žจ์ด ์–ด๋Š ์ •๋„๊นŒ์ง€ ํ™•์žฅ๋  ์ˆ˜ ์žˆ๋Š”์ง€ ์ „ํ˜€ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด์—์š” ใ…Žใ…Ž

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

Q. ์˜์กด ๊ด€๊ณ„ ์—ญ์ „ ์›์น™์„ ์ง€์ผฐ์„ ๋•Œ ์žฅ์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

DIP๋Š” ์ถ”์ƒ ํด๋ž˜์Šค๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค์— ์˜์กดํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ตฌ์ฒด ํด๋ž˜์Šค๋ฅผ ๋ชจ๋ฅด๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ธ๋ฐ์š”! 
DIP๋ฅผ ์ง€ํ‚ค๊ฒŒ ๋˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฒฐํ•ฉ๋„๊ฐ€ ๊ฐ์†Œํ•ฉ๋‹ˆ๋‹ค. 
๋งŒ์•ฝ ํด๋ผ์ด์–ธํŠธ๊ฐ€ parent๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ์ž์‹์œผ๋กœ child1, child2๋ผ๋Š” ๊ตฌ์ฒดํด๋ž˜์Šค๊ฐ€ ์žˆ์„ ๋•Œ ์š”๊ตฌ์‚ฌํ•ญ์˜ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด child2๊ฐ€ ์ œ๊ฑฐ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ด…์‹œ๋‹น. ์ด๋•Œ child2๋ฅผ ์™ธ๋ถ€์—์„œ ์˜์กดํ•˜๊ณ  ์žˆ์—ˆ๋‹ค๋ฉด child2์˜ ์ œ๊ฑฐ๊ฐ€ ์™ธ๋ถ€ ๋กœ์ง์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ฒŒ ๋  ๊ฑฐ์˜ˆ์š”! ๋งŒ์•ฝ parent๋ฅผ ์˜์กดํ•˜๊ณ  ์žˆ์—ˆ๋‹ค๋ฉด ์™ธ๋ถ€์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์ ์„ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€ํ™”์— ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ใ…Žใ…Ž ๊ทธ๋Ÿฐ ์˜๋ฏธ๋กœ OCP์—๋„ ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™์•„์š”.
Q. SOLID๋ฅผ ์ง€์ผœ์„œ ๋” ๊ฐ์ฒด์ง€ํ–ฅ์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋˜ ๊ฒฝํ—˜์ด ์žˆ๋‚˜์š”?

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

 
 

๐Ÿ’ฌ ๊ฐ์ฒด๋ž€?

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

๐Ÿ’ฌ ํด๋ž˜์Šค๋ž€?

๊ฐ์ฒด๊ฐ€ ํƒœ์–ด๋‚˜๋Š” ๊ณณ. ์ธ์Šคํ„ด์Šคํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํด๋ž˜์Šค๋Š” ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋•Œ ๊ฐ์ฒด๋ฅผ ํŒŒ๊ดดํ•˜๋Š” ์ฑ…์ž„์„ ๊ฐ€์ง„๋‹ค.

 

๐Ÿ’ฌ MVC ํŒจํ„ด

Q. MVC ํŒจํ„ด์—์„œ, ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์ด ์ฒ˜๋ฆฌ๋˜๋Š” ๊ณผ์ •์„ ๊ฐ ์š”์†Œ์˜ ์—ญํ• ์ด ๋“œ๋Ÿฌ๋‚˜๋„๋ก ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์ด View๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌ๋˜๊ณ , ์ค‘๊ฐœ์ž์ธ controller๊ฐ€ ์ž…๋ ฅ์— ๋Œ€ํ•œ ๋ณ€ํ™”๋ฅผ ๋ฐ›์•„ domain์—๊ฒŒ ๋ถ€์—ฌํ•˜์—ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. MVC ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๊ฐ๊ฐ์˜ ๊ณ„์ธต์— ๋Œ€ํ•œ ์—ญํ• ์ด ๊ตฌ๋ถ„๋˜์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ์•„์ ธ์„œ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํŽธํ•ด์งˆ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!

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

Q. ๋ทฐ์™€ ๋„๋ฉ”์ธ์€ ์™œ ์ƒํ˜ธ ์˜์กด์„ ํ•˜๋ฉด ์•ˆ ๋ ๊นŒ์š”?

 ๋ทฐ๋Š” ๋น„๊ต์  ๋ณ€๊ฒฝ์ด ์žฆ์€ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋ทฐ์˜ ๋ณ€ํ™”๊ฐ€ ๋„๋ฉ”์ธ์— ์˜ํ–ฅ์„ ์ฃผ๊ฒŒ ๋œ๋‹ค๋ฉด ํ•ต์‹ฌ ๋กœ์ง์ธ ๋„๋ฉ”์ธ์ด ์ƒ๋‹นํžˆ ์žฆ์€ ๋ณ€ํ™”๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋  ๊ฑฐ์˜ˆ์š”. ์ถ”๊ฐ€์ ์œผ๋กœ ๋„๋ฉ”์ธ์ด ๋ทฐ๋ฅผ ์•Œ๊ณ  ์žˆ๊ฒŒ ๋œ๋‹ค๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณต๋˜๋Š” ๋ถ€๋ถ„์„ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ์ง‘์ค‘ํ•˜๊ณ  ์žˆ๋Š” ๋„๋ฉ”์ธ์ด ์•Œ๊ฒŒ ๋˜๋ฉด์„œ ๋„๋ฉ”์ธ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์—ญํ• ๊ณผ ์ฑ…์ž„์ด ๋„ˆ๋ฌด ๋งŽ์•„์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค! ๊ฐ™์€ ์ด์œ ๋กœ ๋ทฐ ์—ญ์‹œ ๋„๋ฉ”์ธ์„ ์˜์กดํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ์˜๋ฏธ๋กœ SRP ๊ด€์ ์—์„œ ๋ดค์„ ๋•Œ ์„œ๋กœ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์—ญํ• ๊ณผ ์ฑ…์ž„์ด ๋ถ„๋ช…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜์กด์„ฑ์„ ๋‚ฎ์ถ”๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

 
 

๐Ÿ’ฌ ์›์‹œ๊ฐ’ ํฌ์žฅ

Q. ์›์‹œ๊ฐ’ ํฌ์žฅ์„ ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ์™€ ์ฃผ์˜ํ•  ์ ์ด ์žˆ๋‹ค๋ฉด ๋ฌด์—‡์ธ๊ฐ€์š”?

์›์‹œ๊ฐ’ ํฌ์žฅ์„ ๋ฌด์กฐ๊ฑด ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ๊ฐ’ ๊ฐ์ฒด ์ž์ฒด๋ฅผ ํฌ์žฅ๋งŒ ํ•œ๋‹ค๋ฉด ์˜คํžˆ๋ ค ๊ฐ์ฒด ์ƒ์„ฑ ๋น„์šฉ์ด ๋” ํด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ๊ฐ์ฒด๋กœ์„œ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜ ํ•ด๋‹น ๊ฐ’์ด ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ํ•„๋“œ๋กœ์„œ ๊ด€๋ฆฌ๋  ๋•Œ ๊ฒ€์ฆ ๋กœ์ง์ด๋‚˜ ๋‹ค๋ฅธ ๋กœ์ง์ด ๋“ค์–ด์žˆ๋‹ค๋ฉด ํ•ด๋‹น ๊ฐ์ฒด์˜ ์ฑ…์ž„์„ ๋œ๊ธฐ ์œ„ํ•ด์„œ ์›์‹œ๊ฐ’ ํฌ์žฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋ถˆ๋ณ€์„ฑ์„ ๋ณด์žฅํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์š”.

 
 

๐Ÿ’ฌ ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ

Q. ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ํŒจํ„ด๊ณผ ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ์˜ ์ฐจ์ด๋Š” ๋ญ”๊ฐ€์š”?

ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ ํŒจํ„ด์˜ ๊ฒฝ์šฐ ๋””์ž์ธ ํŒจํ„ด์ด๊ณ , ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ๋Š” ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ •์  ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค.
ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ํŒจํ„ด์€ ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ํ™•์žฅ์„ฑ ์žˆ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์˜ ์ผ์ข…์ด๊ณ  ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋Š” ์ž๋ฐ”์—์„œ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ์˜ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค!
Q. ๋‹จ์ˆœํžˆ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ ๋ฌด์Šจ ์ฐจ์ด๊ฐ€ ์žˆ์„๊นŒ์š”? ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ˜๋“œ์‹œ ์ข‹์„๊นŒ์š”?

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

 


๐Ÿ’ฌ Checked Exception vs Unchecked Exception

Checked Exception์€ Exception์„ ์ƒ์†ํ•˜๋ฉฐ, ์ปดํŒŒ์ผ ์‹œ์ ์— Exception์„ catch ํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
์ปดํŒŒ์ผ ์‹œ์ ์— Exception์— ๋Œ€ํ•ด ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์œผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. (throws๋กœ ๋˜์ง€๊ฑฐ๋‚˜, ์žก์•„์„œ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜)
Unchecked Exception์€ RuntimeException์„ ์ƒ์†ํ•˜๋ฉฐ, ์ปดํŒŒ์ผ ์‹œ์ ์— Exception์„ catch ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์ง€ ์•Š๋Š”๋‹ค.
์žก์•„์„œ ์ฒ˜๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

- ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์˜ 5๊ฐ€์ง€ ๋ฐฉ๋ฒ•
๋ณต๊ตฌ : ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ •์ƒ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆฌ๊ธฐ
ํšŒํ”ผ: thorws๋ฅผ ํ†ตํ•ด์„œ ๋˜์ง„๋‹ค. ๋‹จ, ์ด ๊ฒฝ์šฐ๋Š” ๋ช…ํ™•ํ•œ ์ด์œ ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
๋ฌด์‹œ: ์•„๋ฌด ์ฒ˜๋ฆฌ๋„ ํ•˜์ง€ ์•Š๊ณ  ๋‹จ์ˆœํžˆ catch๋ฅผ ํ•ด์ค€๋‹ค. ์ด๊ฒƒ ์—ญ์‹œ ๋ช…ํ™•ํ•œ ์ด์œ ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ํ˜น์€, ๋‹จ์ˆœํžˆ ๋กœ๊น…ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์ด์— ํฌํ•จ๋œ๋‹ค.
์ „ํ™˜: RuntimeException์œผ๋กœ ๋ฐ”๊พธ์–ด์„œ ๋˜์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๊ทธ ๋‹ค์Œ ํ˜ธ์ถœ ์ฒด์–ด์—์„œ๋Š” ์˜ˆ์™ธ์— ๋Œ€ํ•ด ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค„ ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๋” ๋ช…ํ™•ํ•ด์ง„๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

Q. ๋‘ ๊ฐ€์ง€ ์ค‘์—์„œ ์–ด๋–ค ์ƒํ™ฉ์—์„œ, ์–ด๋–ค ๊ฒƒ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ๊ฐ€์š”?

์ €๋Š” checked exception์€ ์›ฌ๋งŒํ•˜๋ฉด unchecked exception์œผ๋กœ ๊ฐ์‹ธ์„œ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. 
์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ณณ์€ ํ•ด๋‹น ๋ฐœ์ƒ ์ง€์ ์—์„œ ์ฒ˜๋ฆฌํ•˜๊ณ , ์™ธ๋ถ€๋กœ ์ „ํŒŒ์‹œํ‚ฌ ๊ฒฝ์šฐ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—๋„ ์˜ˆ์™ธ ๊ด€๋ จ ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด์„œ ์ฝ”๋“œ ์ž์ฒด๊ฐ€ ์•Œ์•„๋ณด๊ธฐ ํž˜๋“ค์–ด์งˆ ๋•Œ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. 
๋˜ํ•œ, ์Šคํ”„๋ง์—์„œ๋„ checked exception์€ ํŠธ๋žœ์žญ์…˜์ด ๋กค๋ฐฑ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ์˜ˆ์™ธ ์ƒํ™ฉ์—์„œ ๋ช…์‹œ์ ์œผ๋กœ unchecked Exception์„ ๋ฐœ์ƒ์‹œ์ผœ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ํŽธ์ž…๋‹ˆ๋‹ค. (๊ธฐ๋ณธ์ ์œผ๋กœ '์˜ˆ์™ธ'๊ฐ€ ๋ฐœ์ƒํ•œ ์ƒํ™ฉ์€ ์ •์ƒ ์‹คํ–‰ ํ๋ฆ„์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ํŠธ๋žœ์žญ์…˜ ๋‚ด๋ถ€์—์„œ ์‹คํ–‰๋œ ํ–‰์œ„์— ๋Œ€ํ•ด์„œ ๋‹ค์‹œ ๋ณต๊ตฌ๋ฅผ ์‹œํ‚ค๋Š” ๊ฒŒ ์˜๋ฏธ๋ก ์ ์œผ๋กœ ๋งž๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.)

 

๐Ÿ’ฌ ๋ถˆ๋ณ€ ๊ฐ์ฒด

๋ถˆ๋ณ€ ๊ฐ์ฒด๋Š” ํ•ญ์ƒ ๋™์ผํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ๋ถˆ๋ณ€ ๊ฐ์ฒด๋Š” ๋‚ด๋ถ€ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์บก์Šํ™”๋˜์–ด ์žˆ๋Š” ๋ณธ์ธ์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ๋„ ์•„๋‹ˆ๊ณ , ์–ด๋– ํ•œ ํŠน์ •ํ•œ ๊ฒƒ์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๊ฒƒ๋„ ์•„๋‹ˆ๋‹ค.
    
- ๋ถˆ๋ณ€ ๊ฐ์ฒด๋Š” ์–ด๋–ป๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์„๊นŒ?
๋จผ์ €, ๊ฐ„๋‹จํ•˜๊ฒŒ final ํ‚ค์›Œ๋“œ๋ฅผ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž๋ฐ”์—์„œ ๋ณ€์ˆ˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ€๋ณ€์ ์ด๊ธฐ ๋•Œ๋ฌธ์—, final์„ ํ†ตํ•ด์„œ ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์ปดํŒŒ์ผ ํƒ€์ž„์— ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ ๋ณ€ํ™”ํ•˜๋Š” ๊ฒƒ์„ ์บ์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
ํ•˜์ง€๋งŒ, final ํ‚ค์›Œ๋“œ๋Š” ๋‹จ์ˆœํžˆ ๋ณ€์ˆ˜์˜ ์ฐธ์กฐ๊ฐ’์„ ๋ฐ”๊พธ์ง€ ๋ชปํ•˜๋„๋ก ๋ง‰๋Š” ๊ฒƒ๋ฟ์ด๋‹ค. collection์ด๋‚˜ custom ๊ฐ์ฒด์˜ ์ฐธ์กฐ๋ฅผ ํ†ตํ•ด ์šฐ๋ฆฌ๊ฐ€ ๋‚ด๋ถ€ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ ์ž์ฒด๋Š” ๋ง‰์„ ์ˆ˜ ์—†๋‹ค.
 
๋‘ ๋ฒˆ์งธ๋กœ, ๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ ๋ถˆ๋ณ€์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ๋‚ด๋ถ€ ํ•„๋“œ๋ฅผ private๋กœ ๊ฐ์ถ˜ ๋‹ค์Œ์—, ํ•ด๋‹น ํ•„๋“œ์— ๋Œ€ํ•ด์„œ ์ˆ˜์ •์ž๋ฅผ ์—†์• ๋Š” ๋ฐฉ์‹์ด ์žˆ๋‹ค. ๋˜ํ•œ, ์™ธ๋ถ€๋กœ ํ•„๋“œ๋ฅผ ๊บผ๋‚ด์˜ฌ ๋•Œ (getter) ๋™์ผํ•œ ์ฃผ์†Œ๊ฐ’์„ ๊ฐ€์ง€์ง€ ์•Š๋„๋ก ์ฐธ์กฐ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ ์ปฌ๋ž™์…˜์ด๋ผ๋ฉด new ArrayList<>()๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์›๋ณธ ๊ฐ์ฒด์™€์˜ ์ฃผ์†Œ ๊ณต์œ ๋ฅผ ๋Š์„ ์ˆ˜ ์žˆ๋‹ค.
        
ํ•˜์ง€๋งŒ, ์ด๋Š” ๊นŠ์€ ๋ณต์‚ฌ๋ผ๊ณ  ํ•  ์ˆ˜ ์—†๋‹ค. ๊นŠ์€ ๋ณต์‚ฌ์˜ ๊ฒฝ์šฐ ์›๋ณธ๊ณผ ๋ณต์‚ฌ๋ณธ์˜ ๋ชจ๋“  ์š”์†Œ๋“ค์— ๋Œ€ํ•œ ์ฃผ์†Œ๊ฐ€ ๋‹ฌ๋ผ์•ผ ํ•˜์ง€๋งŒ, ๋ฐฉ์–ด์  ๋ณต์‚ฌ๋Š” ๋‹จ์ˆœํžˆ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ์ปฌ๋ ‰์…˜์˜ ์ฃผ์†Œ๋งŒ ๋‹ค๋ฅด๊ณ  ๋‚ด๋ถ€ ์š”์†Œ๋“ค์˜ ์ฃผ์†Œ๋Š” ๋™์ผํ•œ ๊ณณ์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์—, ์›๋ณธ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  ์–ด๋– ํ•œ ์ƒ์„ฑ์ž์—๊ฒŒ ์ฃผ์ž…ํ•ด์„œ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ–ˆ์„ ๋•Œ, ์›๋ณธ ๊ฐ์ฒด์— ๋ณ€ํ™”๋ฅผ ์ฃผ๊ฒŒ ๋˜๋ฉด ๋ณต์‚ฌ๋ณธ์˜ ๋‚ด๋ถ€ ๊ฐ’๋„ ๋ฐ”๊พธ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.
    
- ๋ฐฉ์–ด์  ๋ณต์‚ฌ์™€ ๊นŠ์€ ๋ณต์‚ฌ
๋งŒ์•ฝ Unmodifiable Collection์„ ํ™œ์šฉํ•œ๋‹ค๋ฉด ์–ด๋–จ๊นŒ?
์ด๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ set, add ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋ฉด UnsupportedOperationException์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋ฉฐ, ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค. ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด๋„, ์‚ฌ์‹ค ์ด ์—ญ์‹œ ๋ถˆ๋ณ€์„ ๋ณด์žฅํ•ด์ฃผ์ง€๋Š” ์•Š๋Š”๋‹ค. ์—ฌ์ „ํžˆ ๋‚ด๋ถ€์ ์œผ๋กœ ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ๋Š” ์›๋ณธ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์›๋ณธ์— ๋ณ€ํ™”๊ฐ€ ์ƒ๊ธฐ๋ฉด ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ๋„ ๋ณ€ํ™˜์ด ๋ฐœ์ƒํ•œ๋‹ค.

์™„์ „ํ•œ ๋ถˆ๋ณ€์„ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, List.copyOf๋ฅผ ํ™œ์šฉํ•˜๊ฑฐ๋‚˜(๋‚ด๋ถ€์ ์œผ๋กœ `ImmutableCollections`์„ ํ™œ์šฉํ•œ๋‹ค) Unmodifiable Collection์„ ํ•œ ๋ฒˆ ๋” new ArrayList<>๋กœ ๊ฐ์‹ธ์•ผ ํ•œ๋‹ค.

Q. ๋ถˆ๋ณ€์„ ๋งŒ์กฑํ•˜๋ฉด ๋ฌด์—‡์ด ์ข‹๋‚˜์š”?

thread-safe๋ฅผ ๋งŒ์กฑํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค! ์ฒ˜์Œ ์ƒ์„ฑ ์ดํ›„์—๋Š” ๊ฐ์ฒด ๋‚ด๋ถ€์˜ ์ƒํƒœ๊ฐ€ ๋ณ€ํ™”ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด์˜ ์ƒ์„ฑ ์‹œ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ•ด๋‹น ๊ฐ์ฒด ์ž์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์‹คํŒจ ์›์ž์„ฑ ๋ณด์žฅ)
์ถ”๊ฐ€์ ์œผ๋กœ ๋ถˆ๋ณ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๊ฐ์ฒด์— ์˜์กดํ•˜์ง€ ์•Š๊ฒŒ ๋˜์–ด ์˜ˆ์ƒ์น˜ ์•Š๊ฒŒ ์ˆ˜์ •๋˜๋Š” ์ผ์„ ๋ง‰์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!


    
๐Ÿ’ฌ ์ƒ์†๊ณผ ์กฐํ•ฉ

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

Q. ์ƒ์†๊ณผ ๋น„๊ตํ–ˆ์„ ๋•Œ ์กฐํ•ฉ์ด ๊ฐ€์ง€๋Š” ์žฅ์ ๊ณผ ๋‹จ์ ์€ ๋ฌด์—‡์ด ์žˆ๋‚˜์š”?

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

์ƒ์†์€ ํ–‰๋™ ํ˜ธํ™˜์„ฑ์„ ๋งŒ์กฑํ•  ๋•Œ = ์™„์ „ํžˆ ๋Œ€์น˜๋  ์ˆ˜ ์žˆ์„ ๋•Œ = is-a ๊ด€๊ณ„์ผ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
์ฆ‰, ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ํƒ€์ž…์œผ๋กœ ์ž์‹ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๊ดœ์ฐฎ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 
 

๐Ÿ’ฌ do-while ๊ตฌ์กฐ

Q. ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”๊ฐ€ ๋–จ์–ด์ ธ์žˆ์„ ๋•Œ ์–ด๋–ค ์ ์ด ์•ˆ ์ข‹์„๊นŒ์š”?

์„ ์–ธ๋ถ€ ์ด์ „์˜ ์–ด๋– ํ•œ ๋กœ์ง์ด ๋“ค์–ด์˜จ๋‹ค๋ฉด NPE๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
null ์ฒดํฌ ๋กœ์ง์ด ๋“ค์–ด๊ฐ€์•ผ ํ•˜๋ฉฐ, ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์˜ ์ธก๋ฉด์œผ๋กœ ๋ดค์„ ๋•Œ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ, ์ดˆ๊ธฐํ™”์™€ ์„ ์–ธ์ด ๋ถ™์–ด์žˆ๋Š” ํ˜•ํƒœ๋ผ๋ฉด ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ์—์„œ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ๋ณ€ํ™”๋ฅผ ์ถ”์ ํ•˜๊ธฐ๊ฐ€ ์‰ฝ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค!

 
 

๐Ÿ’ฌ ์ „๋žต ํŒจํ„ด

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

Q. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ• ๋•Œ, ์ „๋žตํŒจํ„ด์„ ์ ์šฉํ•˜๊ธฐ ์ „์—” ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ณ  ์–ด๋–ป๊ฒŒ ๊ฐœ์„ ํ–ˆ๋Š”์ง€ ๊ฒฝํ—˜์— ๊ธฐ๋ฐ˜ํ•ด์„œ ์–˜๊ธฐํ•ด์ฃผ์„ธ์š”.

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



๐Ÿ’ฌ String pool

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

Q. String pool์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ญ”๊ฐ€์š”?

string์€ ์ •๋ง ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ new๋ฅผ ํ†ตํ•ด์„œ ๊ณ„์† ์ƒ์„ฑํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด heap์— ์ €์žฅ๋˜๋ฉด์„œ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! ๋ฐ˜๋ฉด, string pool์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์ด๋ฏธ ์กด์žฌํ•˜๊ณ  ์žˆ๋Š” ๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ ์žฌ์‚ฌ์šฉ์„ ํ•  ์ˆ˜ ์žˆ๊ธฐ์— ๋ฉ”๋ชจ๋ฆฌ ์ธก๋ฉด์—์„œ ์ด๋“์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 



๐Ÿ’ฌ Try-With-Resources

Q. try-with-resources์€ ์ด์ „์— ์‚ฌ์šฉ๋˜์—ˆ๋˜ ์ž์›๋ฐ˜ํ™˜ ๋ฐฉ๋ฒ•์— ๋น„ํ•ด ์–ด๋–ค ์žฅ์ ์ด ์žˆ๋‚˜์š”?

์ด์ „์—๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ finally ๊ตฌ๋ฌธ์—์„œ close๋ฅผ ํ†ตํ•ด ๋ช…์‹œ์ ์œผ๋กœ ๋‹ซ์•„์ค˜์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค! ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ž‘์„ฑํ•˜๋Š” ๋ถ€๋ถ„์ธ ๊ฒƒ๋งŒํผ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ฆฌ์†Œ์Šค ๋ˆ„์ˆ˜๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์—ˆ๋‹ค๋Š” ๊ฒŒ ๋‹จ์ ์ธ๋ฐ try-with-resources๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ทธ๊ฑธ ์‹ ๊ฒฝ์“ธ ํ•„์š” ์—†์ด ์•Œ์•„์„œ close๋ฅผ ํ˜ธ์ถœํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ต์  ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ํฌ์ธํŠธ๊ฐ€ ์ค„์–ด๋“ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค! 
Q. ๊ทธ๋Ÿผ ๊ฐœ๋ฐœ์ž์˜ ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ ์™ธ์—๋Š” ๋‹ค๋ฅธ ์žฅ์ ์€ ์—†๋‚˜์š”?

๊ทธ์™ธ์—๋Š” ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•ด์ง„๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ try ๊ตฌ๋ฌธ ๋‚ด์—์„œ ๋˜ ๋‹ค์‹œ ๋ฆฌ์†Œ์Šค ํ• ๋‹น์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์ ์ด ๋ฐœ์ƒํ•œ๋‹ค๋ฉด depth๊ฐ€ ๋งค์šฐ ์ปค์งˆ ํ…๋ฐ try-with-resources์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฒ˜์Œ์— ํ•œ ๋ฒˆ์— ์“ธ ์ž์›๋“ค์— ๋Œ€ํ•ด์„œ ์—ด์–ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ, ์ƒ์œ„์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ finally์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด, finally์—์„œ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๋งŒ ๋‚จ๊ฒŒ ๋˜์–ด์„œ ์ƒ์œ„์˜ ์˜ค๋ฅ˜๋ฅผ ์žก์•„๋จนํžˆ๊ฒŒ ๋˜๋Š”๋ฐ suppressed exception๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋ถ€๋ถ„์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



๐Ÿ’ฌ ์ธํ„ฐํŽ˜์ด์Šค vs ์ถ”์ƒ ํด๋ž˜์Šค

Q. ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ถ”์ƒํด๋ž˜์Šค ์ค‘ ์–ด๋Š ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹œ๋‚˜์š”?

์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅด์ง€๋งŒ ์ €๋Š” ๊ฐœ๋ฐœ์ ์ธ ๊ด€์ ์—์„œ ๋ณด์•˜์„ ๋•Œ ๋ณ„๋„์˜ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ํ•„๋“œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ, ํ•˜๋‚˜์˜ ๊ฐ์ฒด๊ฐ€ ๋‹ค์–‘ํ•œ ํ–‰์œ„๋ฅผ ํ•ด์•ผ ํ•  ๋•Œ (= ๋‹ค์ค‘ ์ƒ์†์ด ํ•„์š”ํ•  ๋•Œ) ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. (๋‘˜์ด ๋™์ผํ•œ ์—ญํ• ์„ ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •)

๋˜ํ•œ, ๊ฐ์ฒด์™€ ๊ฐ์ฒด ์‚ฌ์ด์˜ ๊ด€๊ณ„์„ฑ์ด ์•„๋‹Œ ๊ฐ์ฒด๊ฐ€ ํ•ด์•ผ ํ•˜๋Š” ํ–‰๋™ ๊ทœ์•ฝ์„ ์ •์˜ํ•  ๋•Œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ, ๊ฐ์ฒด์˜ ์ƒํƒœ์™€ ๋ฐ€์ ‘ํ•˜๊ฒŒ ์—ฐ๊ด€๋„๋‹ˆ ๊ฐ์ฒด๋ผ๋ฉด ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํŽธ์ž…๋‹ˆ๋‹ค.

'a๋Š” b์— ์†ํ•œ๋‹ค' ๋ผ๋Š” ๊ฐœ๋…์ด๋ผ๋ฉด ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ (์—ฌ๋Ÿฌ ๊ฐœ์— ์†ํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ผ ๋•Œ), 'a๋Š” b๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค'๋ผ๋Š” ๊ฐœ๋…์ด๋ผ๋ฉด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ, ๋‹ค์ค‘์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ์ œ์™ธํ•˜๊ณ  ๋‹จ์ผ์ ์ธ ๊ด€์ ์—์„œ ๋ณธ๋‹ค๋ฉด '์—ฐ๊ด€์ด ๋˜์–ด ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š”์ง€' ์ด 2๊ฐ€์ง€ ๊ด€์ ์œผ๋กœ ๋ฐ”๋ผ๋ณผ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!

โœ”๏ธ ๋ ˆ๋ฒจ ์ธํ„ฐ๋ทฐ ํ›„๊ธฐ

๋ ˆ๋ฒจ ์ธํ„ฐ๋ทฐ๋ฅผ ์ค€๋น„ํ•˜๋ฉด์„œ ์ธํ„ฐ๋ทฐ์–ด 2๋ฒˆ, ์ธํ„ฐ๋ทฐ์ด, ์˜ต์ €๋ฒ„ 3๋ฒˆ ์ด๋Ÿฐ ์‹์œผ๋กœ ์ง„ํ–‰ํ–ˆ๋‹ค.
์šฐ๋ฆฌ๋Š” ์ฝ”์น˜๋‹˜์ด ์ธํ„ฐ๋ทฐ์–ด๋กœ ๊ณ„์† ์ฐธ์—ฌํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ธํ„ฐ๋ทฐ์ด ์ž…์žฅ์—์„œ๋Š” 3๋ช…์˜ ์ธํ„ฐ๋ทฐ์–ด์™€ 3๋ช…์˜ ์˜ต์ €๋ฒ„๋ฅผ ์ƒ๋Œ€ํ•ด์•ผ ํ–ˆ๋‹ค ๐Ÿ’ฆ

๋”ฑ ์ด๋Ÿฐ ๋ฐฐ์น˜๋„์˜€๋‹ค. ๊ต‰์žฅํžˆ ์••๋ฐ•๋ฉด์ ‘ ๊ฐ™์€ ๋ฐฐ์น˜๋„์˜€๋‹ค... ใ…Ž
 
 

๐ŸŒฑ ์ธํ„ฐ๋ทฐ์–ด๋กœ ๋Š๋‚€ ์ 

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

 
๐ŸŒฑ ์˜ต์ €๋ฒ„๋กœ ๋Š๋‚€ ์ 

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

๐ŸŒฑ ์ธํ„ฐ๋ทฐ์ด๋กœ ๋Š๋‚€ ์ 

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

๐ŸŒฑ ์ด๋ฒˆ ๋ ˆ๋ฒจ ํ•™์Šต ์ธก๋ฉด์—์„œ ์ข‹์€ ์ ๊ณผ ๋ถ€์กฑํ•œ ์ ์€?
- ํ•™์Šตํ•œ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๊ฒƒ์€ ์ƒ๊ฐ์ด ์ด๋ฏธ ์ž˜ ์ •๋ฆฌ๊ฐ€ ๋˜์–ด์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋Š๊ปด์ ธ์„œ ์ข‹์•˜์Šต๋‹ˆ๋‹ค.
- ๊ถ๊ธˆํ•œ ์ ์— ๋Œ€ํ•ด์„œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋„ ๋œฏ์–ด๋ณด์‹œ๊ณ , ๊นŠ์ด์žˆ๋Š” ํ•™์Šต์„ ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ด ์ž˜ ๋Š๊ปด์กŒ์Šต๋‹ˆ๋‹ค.
- ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์— ๋Œ€ํ•œ ์ž๋™์ฐจ ์˜ˆ์‹œ๊ฐ€ ์ข‹์•˜์Šต๋‹ˆ๋‹ค. try-with-resources๋ฅผ ๋งค์šฐ ๊ตฌ์ฒด์ ์œผ๋กœ ์„ค๋ช…ํ•ด์ฃผ์‹œ๋Š” ๋ถ€๋ถ„์ด ์ข‹์•˜์Šต๋‹ˆ๋‹ค.

 

๐ŸŒฑ ์ธํ„ฐ๋ทฐ, ๋งํ•˜๊ธฐ ์ธก๋ฉด์—์„œ ์ข‹์€ ์ ๊ณผ ๊ฐœ์„ ํ•  ๋ถ€๋ถ„์€?
[์ข‹์€ ์ ]
- ์–ด๋–ค ๋ถ€๋ถ„์„ ์„ค๋ช…ํ•  ๋•Œ, ๋‹จ๊ณ„์ ์œผ๋กœ ์–ด๋–ค ๋ถ€๋ถ„์˜ ์„ค๋ช…์ด ํ•„์š”ํ•œ์ง€์— ๋Œ€ํ•œ ๋ถ€๋ถ„์„ ์ธ์ง€์‹œ์ผœ์ฃผ๋Š” ๋ฐฉ์‹์ด ๊ต‰์žฅํžˆ ์ข‹๊ฒŒ ๋Š๊ปด์กŒ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ƒ๊ฐ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์—์„œ๋„ ์–ด๋–ป๊ฒŒ๋“  ๋ฐฉํ–ฅ์„ ์žก๊ณ  ๊ฒฐ๋ก ์œผ๋กœ ๊ฐ€๋Š” ๋ชจ์Šต์ด ์ธ์ƒ๊นŠ์—ˆ์Šต๋‹ˆ๋‹ค.

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

- ์ž๊ธฐ์˜ ์ฃผ๊ด€์„ ๋งค์šฐ ์กฐ๋ฆฌ์žˆ๊ฒŒ ๋งํ•œ๋‹ค. ์„ค๋ช…ํ•  ๋•Œ ์ƒ๊ฐ์— ๋Œ€ํ•œ ์ด์œ , ๊ทผ๊ฑฐ, ์˜ˆ์‹œ๊ฐ€ ์žˆ์–ด์„œ ์ข‹์•˜์Šต๋‹ˆ๋‹ค. ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ์งˆ๋ฌธ์— ๋Œ€ํ•ด ๋Œ€์ฒ˜๋ฅผ ๊ต‰์žฅํžˆ ์ž˜ํ•˜์‹œ๋„ค์š”. ์งˆ๋ฌธ์˜ ์˜๋„๋ฅผ ๋‹ค์‹œ ํ•œ ๋ฒˆ ํ™•์ธํ•˜๋Š”๊ฒŒ ๋Œ€๋‹จํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

[๊ฐœ์„ ํ•  ์ ]
- ๋ชฉ์†Œ๋ฆฌ๊ฐ€ ์ข€ ๋” ์ปธ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.
- ๋ชฉ์†Œ๋ฆฌ๊ฐ€ ์•ฝ๊ฐ„๋งŒ ๋” ์ปธ๋‹ค๋ฉด ์ ธ๋‹ˆ์˜ ์˜๊ฒฌ์„ ๋”์šฑ ์ž˜ ๋“ค์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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


โœ”๏ธ ๊ฐ์ • ํšŒ๊ณ 

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

Comments