๐Ÿšจ ์ด ์š”์ฒญ์€ ๋ด‡(Bot) ๋˜๋Š” ํฌ๋กค๋Ÿฌ๋กœ ํŒ๋‹จ๋ฉ๋‹ˆ๋‹ค. ์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ” Effective Java: 3ํŒ, ํด๋ฆฐ ์ฝ”๋”ฉ์„ ์œ„ํ•œ ํ•ต์‹ฌ ๊ฐ€์ด๋“œ

์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ” Effective Java: 3ํŒ, ํด๋ฆฐ ์ฝ”๋”ฉ์„ ์œ„ํ•œ ํ•ต์‹ฌ ๊ฐ€์ด๋“œ

์ž๋ฐ” ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ ํ•œ ๋ฒˆ์ฏค์€ ๋“ค์–ด๋ดค์„ ์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”(Effective Java).
์กฐ์Šˆ์•„ ๋ธ”๋กœํฌ(Joshua Bloch)๊ฐ€ ์“ด ์ด ์ฑ…์€, ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋ฐ”์ด๋ธ”๊ณผ ๊ฐ™์€ ์กด์žฌ๋กœ ์—ฌ๊ฒจ์ง‘๋‹ˆ๋‹ค.
2001๋…„์— 1ํŒ์ด ๋‚˜์˜จ ์ดํ›„, ์ž๋ฐ” ์–ธ์–ด์˜ ๋ณ€ํ™”์™€ ํ•จ๊ป˜ ๊พธ์ค€ํžˆ ๊ฐœ์ •ํŒ์ด ์ถœ๊ฐ„๋˜์—ˆ๊ณ , ํ˜„์žฌ๋Š” 3ํŒ๊นŒ์ง€ ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.
Effective Java๋ฅผ ์„ ํƒํ•œ ์ด์œ ๋Š”, ์ž๋ฐ” ๊ฐœ๋ฐœ์ž๋กœ์„œ ๋”์šฑ ์„ฑ์ˆ™ํ•˜๊ณ  ํšจ์œจ์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹ถ์€ ๊ฐˆ๋ง ๋•Œ๋ฌธ์ด์—ˆ์Šต๋‹ˆ๋‹ค.


์กฐ์Šˆ์•„ ๋ธ”๋กœํฌ๋Š” ๋›ฐ์–ด๋‚œ ์ž๋ฐ” ๊ฐœ๋ฐœ์ž์ด์ž ์ €์ˆ ๊ฐ€์ž…๋‹ˆ๋‹ค.
๊ทธ๋Š” ์นด๋„ค๊ธฐ ๋ฉœ๋ก  ๋Œ€ํ•™๊ต์—์„œ ์ปดํ“จํ„ฐ ๊ณผํ•™ ๋ฐ•์‚ฌ ํ•™์œ„๋ฅผ ๋ฐ›๊ณ , ์„  ๋งˆ์ดํฌ๋กœ์‹œ์Šคํ…œ์ฆˆ(Sun Microsystems)์™€ ๊ตฌ๊ธ€(Google)์—์„œ ํ•ต์‹ฌ์ ์ธ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
ํŠนํžˆ, ์ž๋ฐ” ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์™€ java.math ํŒจํ‚ค์ง€๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์ฃผ๋„์ ์ธ ์—ญํ• ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ์˜ ๊นŠ์ด ์žˆ๋Š” ์ง€์‹๊ณผ ํ’๋ถ€ํ•œ ๊ฒฝํ—˜์€ Effective Java ๊ณณ๊ณณ์— ๋…น์•„ ์žˆ์œผ๋ฉฐ, ๋…์ž๋“ค์—๊ฒŒ ๊นŠ์€ ํ†ต์ฐฐ๋ ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ” Effective Java: 3ํŒ, ํด๋ฆฐ ์ฝ”๋”ฉ์„ ์œ„ํ•œ ํ•ต์‹ฌ ๊ฐ€์ด๋“œ_70


Effective Java๋Š” ์ด 12๊ฐœ์˜ ์ฑ•ํ„ฐ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๊ฐ ์ฑ•ํ„ฐ๋Š” ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŠน์ • ์˜์—ญ์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ์ง€์นจ๊ณผ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐ ์ฑ•ํ„ฐ์˜ ํ•ต์‹ฌ ๋‚ด์šฉ์„ ํ•œ ๋ฌธ์žฅ์œผ๋กœ ์š”์•ฝํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.


1์žฅ.
๋“ค์–ด๊ฐ€๊ธฐ: ์ž๋ฐ”๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ „๋ฐ˜์ ์ธ ์กฐ์–ธ
2์žฅ.
๊ฐ์ฒด ๋งŒ๋“ค๊ธฐ: ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€
3์žฅ.
๋ฉ”์„œ๋“œ: ๋ฉ”์„œ๋“œ ์„ค๊ณ„ ๋ฐ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ
4์žฅ.
ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค: ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค ์„ค๊ณ„ ์›์น™
5์žฅ.
์ œ๋„ค๋ฆญ: ์ œ๋„ค๋ฆญ์„ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
6์žฅ.
์—ด๊ฑฐ ํƒ€์ž…๊ณผ ์• ๋„ˆํ…Œ์ด์…˜: ์—ด๊ฑฐ ํƒ€์ž…๊ณผ ์• ๋„ˆํ…Œ์ด์…˜ ํ™œ์šฉ๋ฒ•
7์žฅ.
๋žŒ๋‹ค์™€ ์ŠคํŠธ๋ฆผ: ๋žŒ๋‹ค์™€ ์ŠคํŠธ๋ฆผ์„ ํ™œ์šฉํ•œ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ
8์žฅ.
๋ฉ”์„œ๋“œ: ๋ฉ”์„œ๋“œ ์„ค๊ณ„ ๋ฐ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ
9์žฅ.
์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ: ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹œ ํ”ํžˆ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ ๊ณผ ํ•ด๊ฒฐ์ฑ…
10์žฅ.
์˜ˆ์™ธ: ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์˜ ๋ชจ๋ฒ” ์‚ฌ๋ก€
11์žฅ.
๋™์‹œ์„ฑ: ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•
12์žฅ.
์ง๋ ฌํ™”: ์ง๋ ฌํ™”์˜ ์œ„ํ—˜์„ฑ๊ณผ ๋Œ€์•ˆ


์ด ์ฑ… ์ „์ฒด๋ฅผ ๊ด€ํ†ตํ•˜๋Š” ํ•ต์‹ฌ ๋ฉ”์‹œ์ง€๋Š” ์ž๋ฐ” ์–ธ์–ด์˜ ๊ธฐ๋Šฅ์„ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
Effective Java๋Š” ์ž๋ฐ” ์–ธ์–ด์˜ ์ˆจ๊ฒจ์ง„ ๊ธฐ๋Šฅ๊ณผ ์ž ์žฌ๋ ฅ์„ ั€ะฐัะบั€ั‹ะฒะฐะตั‚, ๊ฐœ๋ฐœ์ž๋“ค์ด ๋”์šฑ ํšจ์œจ์ ์ด๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.


Effective Java์—๋Š” ๊ธฐ์–ตํ•ด์•ผ ํ•  ๋ฌธ์žฅ๋“ค์ด ๊ฐ€๋“ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ์ค‘ ๋ช‡ ๊ฐ€์ง€๋ฅผ ๊ผฝ์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.


์•„์ดํ…œ 1: ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ๊ณ ๋ คํ•˜๋ผ
์•„์ดํ…œ 3: private ์ƒ์„ฑ์ž๋‚˜ ์—ด๊ฑฐ ํƒ€์ž…์œผ๋กœ ์‹ฑ๊ธ€ํ„ด์ž„์„ ๋ณด์ฆํ•˜๋ผ
์•„์ดํ…œ 8: equals๋ฅผ ์žฌ์ •์˜ํ•  ๋•Œ๋Š” hashCode๋„ ์žฌ์ •์˜ํ•˜๋ผ
์•„์ดํ…œ 13: ํด๋ž˜์Šค์™€ ๋ฉค๋ฒ„์˜ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์ตœ์†Œํ™”ํ•˜๋ผ
์•„์ดํ…œ 52: ์˜ˆ์™ธ๋ฅผ ๋ฌด์‹œํ•˜์ง€ ๋งˆ๋ผ



Effective Java๋ฅผ ์ฝ์œผ๋ฉด์„œ ๊ฐ€์žฅ ํฌ๊ฒŒ ๋А๋‚€ ์ ์€, ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—๋Š” ์ •๋‹ต์ด ์ •ํ•ด์ ธ ์žˆ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ƒํ™ฉ์— ๋”ฐ๋ผ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋ฐฉ๋ฒ•์€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, Effective Java๋Š” ๊ทธ๋Ÿฌํ•œ ์ƒํ™ฉ ํŒ๋‹จ ๋Šฅ๋ ฅ์„ ํ‚ค์›Œ์ฃผ๋Š” ๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค.
Effective Java๋Š” ๋‹จ์ˆœํ•œ ๊ธฐ์ˆ  ์„œ์ ์„ ๋„˜์–ด, ์ž๋ฐ” ๊ฐœ๋ฐœ์ž๋กœ์„œ์˜ ์‚ฌ๊ณ ๋ฐฉ์‹๊ณผ ํƒœ๋„๋ฅผ ๊ฐ€๋‹ค๋“ฌ๋Š” ๋ฐ ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์ฑ…์ž…๋‹ˆ๋‹ค.
Effective Java๋Š” ์ž๋ฐ” ๊ฐœ๋ฐœ์˜ ๊นŠ์ด๋ฅผ ๋”ํ•˜๊ณ , ๋” ๋‚˜์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋˜๋„๋ก ์ด๋Œ์–ด์ฃผ๋Š” ํ›Œ๋ฅญํ•œ ์ง€์นจ์„œ์ž…๋‹ˆ๋‹ค.


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


๊ด€๋ จ ๋ฌธ์„œ


SI ๊ธฐ์—… 1๋…„์ฐจ์— ์„œ๋น„์Šค๊ธฐ์—… ์ด์ง ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

์ œ ์ด์ง ํ›„๊ธฐ์— ๋‚˜์˜ฌ ์ด์ง๋น„๋ฒ•(?)์€ ๊ฐ€์ด๋“œ๋ผ์ธ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ๊ผญ... ์ž๋ฐ”๋ด„ ์Šคํ„ฐ๋””๋Š” "Java + Spring" ๊ฐœ๋ฐœ์ž๋ฅผ ๋ชฉํ‘œ๋กœ "ํด๋ฆฐ์ฝ”๋“œ... ๊ฐ์ฒด์ง€ํ–ฅ์˜ ์‚ฌ์‹ค๊ณผ ์˜คํ•ด๋ฅผ ์‹œ์ž‘์œผ๋กœ ์ง€๊ธˆ ์ดํŽ™ํ‹ฐ๋ธŒ์ž๋ฐ”๋ฅผ ์ฝ๊ณ ์žˆ์Šต๋‹ˆ๋‹ค....