๋ชฉ๋ก๐Ÿ“–/Effective Java (6)

DevLog ๐Ÿ˜ถ

[์ดํŒฉํ‹ฐ๋ธŒ์ž๋ฐ”] ์•„์ดํ…œ 04. ์ธ์Šคํ„ด์Šคํ™”๋ฅผ ๋ง‰์œผ๋ ค๋ฉด private ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ผ

๐Ÿ’ฌ ์ดํŒฉํ‹ฐ๋ธŒ์ž๋ฐ” ์•„์ดํ…œ 4์„ ์ฝ๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. โœ”๏ธ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ์™€ ๋ณ€์ˆ˜๊ฐ€ ์—†์ด, ์ •์  ๋ฉ”์„œ๋“œ์™€ ์ •์  ๋ณ€์ˆ˜๋งŒ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๊ฐœ์ธ์ ์ธ ์˜๊ฒฌ์ด์ง€๋งŒ, ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด์ง€ํ–ฅ์  ๊ด€์ ์—์„œ ๋ดค์„ ๋•Œ ์ข‹๋‹ค๊ณ ๋Š” ๋ณด๊ธฐ ํž˜๋“ค ๊ฒƒ ๊ฐ™๋‹ค. ์ž๋ฐ”์—์„œ ์ œ๊ณตํ•˜๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค ์ค‘์— ๋Œ€ํ‘œ์ ์ธ ๊ฒƒ๋“ค์„ ๋ช‡ ๊ฐ€์ง€ ์‚ดํŽด๋ณด์ž. public class Arrays { private Arrays() {} ... } ์œ„ ์ฝ”๋“œ๋Š” java.util์— ์กด์žฌํ•˜๋Š” Arrays ํด๋ž˜์Šค์ด๋‹ค. ์ด ํด๋ž˜์Šค๋Š” ๋ฐฐ์—ด์„ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์ •๋ ฌ์ด๋‚˜ ๊ฒ€์ƒ‰ ๋“ฑ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์ •์  ๋ฉ”์„œ๋“œ๋“ค์„ ์ œ๊ณตํ•œ๋‹ค. (๋Œ€๋ถ€๋ถ„์˜ ๋ฉ”์„œ๋“œ๋Š” ์˜ค๋ฒ„๋กœ๋”ฉ๋˜์–ด ์žˆ์–ด์„œ ์‹ค์ œ๋กœ ํ•˜๋Š” ์—ญํ• ์€ ๊ฒ€์ƒ‰, ๋ณต์‚ฌ, ์ฑ„์šฐ๊ธฐ, ์ •๋ ฌ... ๋“ฑ๋“ฑ์ด ์žˆ๋‹ค) ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค๋กœ ์‚ฌ..

๐Ÿ“–/Effective Java 2023. 4. 6. 12:08
[์ดํŒฉํ‹ฐ๋ธŒ์ž๋ฐ”] ์•„์ดํ…œ 03. private ์ƒ์„ฑ์ž๋‚˜ ์—ด๊ฑฐ ํƒ€์ž…์œผ๋กœ ์‹ฑ๊ธ€ํ„ด์ž„์„ ๋ณด์ฆํ•˜๋ผ

๐Ÿ’ฌ ์ดํŒฉํ‹ฐ๋ธŒ์ž๋ฐ” ์•„์ดํ…œ 3์„ ์ฝ๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. โœ”๏ธ ์‹ฑ๊ธ€ํ„ด ์ธ์Šคํ„ด์Šค ์ธ์Šคํ„ด์Šค๋ฅผ ์˜ค์ง ํ•˜๋‚˜๋งŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ž˜์Šค. ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋งŒ, ๊ฒฐํ•ฉ๋„๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉฐ ํด๋ผ์ด์–ธํŠธ์˜ ํ…Œ์ŠคํŠธ๊ฐ€ ์–ด๋ ค์›Œ์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ์กด์žฌํ•œ๋‹ค. -> ์ธ์Šคํ„ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์„œ ๋งŒ๋“  ์‹ฑ๊ธ€ํ„ด์ด ์•„๋‹ˆ๋ผ๋ฉด, ์‹ฑ๊ธ€ํ„ด ์ธ์Šคํ„ด์Šค๋ฅผ mock ๊ฐ์ฒด๋กœ ๋Œ€์ฒดํ•˜๊ธฐ๊ฐ€ ํž˜๋“ค๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๐Ÿ’ฌ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ• 1. ์ƒ์„ฑ์ž๋ฅผ ๋ชจ๋‘ private๋กœ ๋งŒ๋“ค๊ณ , ์ธ์Šคํ„ด์Šค์˜ ์œ ์ผํ•œ ์ ‘๊ทผ์ž๋ฅผ public static์œผ๋กœ ์ƒ์„ฑํ•˜๊ธฐ public class Crew { public static final Crew INSTANCE = new Crew(); private Crew() { ... } public void hello() {...} }..

๐Ÿ“–/Effective Java 2023. 4. 4. 23:29
[์ดํŒฉํ‹ฐ๋ธŒ์ž๋ฐ”] ์•„์ดํ…œ 02. ์ƒ์„ฑ์ž์— ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋งŽ๋‹ค๋ฉด ๋นŒ๋”๋ฅผ ๊ณ ๋ คํ•˜๋ผ

๐Ÿ’ฌ ์ดํŒฉํ‹ฐ๋ธŒ์ž๋ฐ” ์•„์ดํ…œ 2์„ ์ฝ๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. โœ”๏ธ ํด๋ž˜์Šค์— ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๊ฐ€ ๋งŽ์„ ๊ฒฝ์šฐ, ๊ฐ์ฒด๋ฅผ ์–ด๋–ป๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์„๊นŒ? - ์ƒ์„ฑ์ž๋ฅผ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜๋กœ ๋‘์–ด์„œ, ํ•„์š”ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋งŒ์„ ์‚ฌ์šฉํ•˜๋Š” ์ƒ์„ฑ์ž ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค - ๊ทธ๋Ÿฌ๋‚˜, ์ด ๋ฐฉ๋ฒ•์€ ํ•„๋“œ๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉด ๊ทธ๋งŒํผ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์ƒ์„ฑ์ž๊ฐ€ ๋งŽ์•„์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ข‹์ง€ ์•Š๋‹ค. - ๋˜ํ•œ, ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•˜๋ฉด (์ธํ…”๋ฆฌ์ œ์ด์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ํžŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์ƒ) ๊ฐ ๊ฐ’์˜ ์˜๋ฏธ๋ฅผ ํ•œ๋ˆˆ์— ์•Œ์•„๋ณด๊ธฐ๊ฐ€ ํž˜๋“ค๊ณ , ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•  ํ™•๋ฅ ์ด ๋†’์•„์งˆ ์ˆ˜ ์žˆ๋‹ค. public class Crew { private String name; private int age; private String course; private String nickname; } ์˜ˆ์‹œ๋กœ, ํฌ๋ฃจ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š”..

๐Ÿ“–/Effective Java 2023. 4. 3. 19:54
[์ดํŒฉํ‹ฐ๋ธŒ์ž๋ฐ”] ์•„์ดํ…œ 78. ๊ณต์œ  ์ค‘์ธ ๊ฐ€๋ณ€ ๋ฐ์ดํ„ฐ๋Š” ๋™๊ธฐํ™”ํ•ด ์‚ฌ์šฉํ•˜๋ผ (1)

๐Ÿ’ฌ ์ดํŒฉํ‹ฐ๋ธŒ์ž๋ฐ” ์•„์ดํ…œ 78์„ ์ฝ๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ์ •๋ฆฌ๋Š” ์ฑ…๊ณผ๋Š” ๋‹ค์†Œ ๋‹ค๋ฅธ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค :D ๊ฐœ๋… ์ž์ฒด๊ฐ€ ์–ด๋ ค์šด ๋ถ€๋ถ„์ด์–ด์„œ ์ฑ…์„ ์ฝ์œผ๋ฉฐ ๊ถ๊ธˆํ•œ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์กฐ์‚ฌํ•˜๋Š” ์‹์œผ๋กœ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค ๐Ÿ™‡‍โ™€๏ธ ๋‘ ํŽธ์œผ๋กœ ๋‚˜๋ˆ„์–ด์„œ ํฌ์ŠคํŒ… ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค! ์•„์ง ๋ฏธํกํ•œ ์ ์ด ๋งŽ์•„์„œ, ๋” ์ •ํ™•ํ•œ ์ •๋ณด๋ฅผ ์•Œ๊ฒŒ ๋˜๋ฉด ๋ณธ ๊ฒŒ์‹œ๊ธ€์„ ์ˆ˜์ •ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. โœ”๏ธ ๋™๊ธฐํ™”๋ž€ ๋ฌด์—‡์ผ๊นŒ? ํ˜„์žฌ ์ž”์•ก์ด 10000์›์ด๊ณ , ๊ฐ๊ฐ 1000์›์”ฉ ์ž…๊ธˆํ•˜๋Š” ํ–‰์œ„๋ฅผ 5000๋ฒˆ, 1000์›์”ฉ ์ถœ๊ธˆํ•˜๋Š” ํ–‰์œ„๋ฅผ 5000๋ฒˆ ๋ฐ˜๋ณตํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ๋™์ผํ•œ ๊ธˆ์•ก์— ๋Œ€ํ•ด ๋™์ผํ•œ ํšŸ์ˆ˜๋กœ 5000๋ฒˆ์”ฉ ์ง„ํ–‰ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์šฐ๋ฆฌ์˜ ์ž”์•ก์—๋Š” ๋ณ€ํ™”๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค. [synchronized ํ‚ค์›Œ๋“œ ๋ถ™์ด๊ธฐ ์ „] public class Main { public stati..

๐Ÿ“–/Effective Java 2023. 3. 26. 21:24
[์ดํŒฉํ‹ฐ๋ธŒ์ž๋ฐ”] ์•„์ดํ…œ 09. ๋ฆฌ์†Œ์Šค์˜ ์‚ฌ์šฉ๊ณผ ํ•ด์ œ : try-finally๋ณด๋‹ค๋Š” try-with-resources๋ฅผ ์‚ฌ์šฉํ•˜๋ผ

๐Ÿ’ฌ ์ดํŒฉํ‹ฐ๋ธŒ์ž๋ฐ” ์ฑ•ํ„ฐ 9๋ฅผ ์ฝ๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. โœ”๏ธ ๋ฆฌ์†Œ์Šค๋Š” ์–ด๋–ป๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ์„๊นŒ? ํ”ํžˆ ์ž๋ฐ”์—์„œ๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•œ ๋‹ค์Œ, catch๋ฅผ ํ†ตํ•ด ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , finally์—์„œ close()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง์ ‘ ๋‹ซ์•„์ฃผ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. (try-catch-finally) ์ด๋•Œ, ๋‹ซ์•„์ฃผ์ง€ ์•Š์œผ๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ์˜ˆ๊ธฐ์น˜ ๋ชปํ•œ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์˜ค๋ผํด ๋ฌธ์„œ๋ฅผ ๋ฐœ์ทŒํ•ด๋ณด๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์žฅ์ด ์กด์žฌํ•œ๋‹ค. The typical Java application manipulates several types of resources such as files, streams, sockets, and database connections. Such resources must be handl..

๐Ÿ“–/Effective Java 2023. 3. 13. 15:14
[์ดํŒฉํ‹ฐ๋ธŒ์ž๋ฐ”] ์•„์ดํ…œ 01. ์ƒ์„ฑ์ž ๋Œ€์‹  ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ๊ณ ๋ คํ•˜๋ผ

๐Ÿ’ฌ ์ดํŒฉํ‹ฐ๋ธŒ์ž๋ฐ” ์ฑ•ํ„ฐ 1์„ ์ฝ๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. โœ”๏ธ ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ๋ž€? ์šฐํ…Œ์ฝ” ๋ฏธ์…˜์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ, ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ์ •๋ง ๋งŽ์ด ์‚ฌ์šฉํ•˜์˜€๋‹ค. ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ๋ž€, ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ •์  ๋ฉ”์„œ๋“œ์ด๋‹ค. ์ฆ‰, ์ƒ์„ฑ์ž ์—ญํ• ์„ ํ•˜๋ฉด์„œ๋„ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์ „์— 1์ฐจ์ ์œผ๋กœ ํ†ต๊ณผํ•˜๋Š” '๋ฌธ' ๊ฐ™์€ ์กด์žฌ๋ผ๊ณ ๋„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋–ค ์ ์ด ์ข‹์„๊นŒ? ๐Ÿ’ฌ ๋™์ผํ•œ ์‹œ๊ทธ๋‹ˆ์ฒ˜๋ผ๋„, ์ด๋ฆ„์— ๋”ฐ๋ผ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. ์–ด๋Š ๋‚ , ์šฐํ…Œ์ฝ”์— ํฌ๋ฃจ ์‹ ์ฒญ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์‹ ์ฒญ์„œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ์ด๋•Œ, ๋‹‰๋„ค์ž„์„ ์•„์ง ์ •ํ•˜์ง€ ๋ชปํ•œ ํฌ๋ฃจ๋Š” ์ด๋ฆ„๊ณผ ๋‚˜์ด, ๊ทธ๋ฆฌ๊ณ  ๊ณผ์ •๋งŒ์„ ๊ฐ€์ง€๊ณ  ํฌ๋ฃจ๋ฅผ ์‹ ์ฒญํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค. public class Crew { private String name; private Strin..

๐Ÿ“–/Effective Java 2023. 2. 28. 00:44