Java

[Effective Java] ์•„์ดํ…œ 66. ๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ๋Š” ์‹ ์ค‘ํžˆ ์‚ฌ์šฉํ•˜๋ผ, ์•„์ดํ…œ 67. ์ตœ์ ํ™”๋Š” ์‹ ์ค‘ํžˆ ํ•˜๋ผ, ์•„์ดํ…œ 68. ์ผ๋ฐ˜์ ์œผ๋กœ ํ†ต์šฉ๋˜๋Š” ๋ช…๋ช… ๊ทœ์น™์„ ๋”ฐ๋ฅด๋ผ.

quedevel 2023. 3. 30. 14:35
728x90
๋ฐ˜์‘ํ˜•

๐ŸŽฏ ์•„์ดํ…œ 66. ๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ๋Š” ์‹ ์ค‘ํžˆ ์‚ฌ์šฉํ•˜๋ผ.

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


๐ŸŽฏ ์•„์ดํ…œ 67. ์ตœ์ ํ™”๋Š” ์‹ ์ค‘ํžˆ ํ•˜๋ผ.

๋น ๋ฅธ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ ค ์•ˆ๋‹ฌํ•˜์ง€ ๋ง์ž. ์ข‹์€ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋‹ค ๋ณด๋ฉด ์„ฑ๋Šฅ์€ ๋”ฐ๋ผ์˜ค๊ฒŒ ๋งˆ๋ จ์ด๋‹ค.

1๏ธโƒฃ ์„ฑ๋Šฅ์„ ์ œํ•œํ•˜๋Š” ์„ค๊ณ„๋ฅผ ํ”ผํ•˜๋ผ.

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


2๏ธโƒฃ API๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ์„ฑ๋Šฅ์— ์ฃผ๋Š” ์˜ํ–ฅ์„ ๊ณ ๋ คํ•˜๋ผ.

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

์ธํ„ฐํŽ˜์ด์Šค๋„ ์žˆ๋Š”๋ฐ ๊ตณ์ด ๊ตฌํ˜„ ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ์—ญ์‹œ ์ข‹์ง€ ์•Š๋‹ค. ํŠน์ • ๊ตฌํ˜„์ฒด์— ์ข…์†๋˜๊ฒŒ ํ•˜์—ฌ, ๋‚˜์ค‘์— ๋” ๋น ๋ฅธ ๊ตฌํ˜„์ฒด๊ฐ€

๋‚˜์˜ค๋”๋ผ๋„ ์ด์šฉํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋œ๋‹ค.


3๏ธโƒฃ ์„ฑ๋Šฅ์„ ์œ„ํ•ด API๋ฅผ ์™œ๊ณกํ•˜๋Š” ๊ฑด ๋งค์šฐ ์•ˆ ์ข‹์€ ์ƒ๊ฐ์ด๋‹ค.

์‹ ์ค‘ํ•˜๊ฒŒ ์„ค๊ณ„ํ•˜์—ฌ ๊นจ๋—ํ•˜๊ณ  ๋ช…ํ™•ํ•˜๊ณ  ๋ฉ‹์ง„ ๊ตฌ์กฐ๋ฅผ ๊ฐ–์ถ˜ ํ”„๋กœ๊ทธ๋žจ์„ ์™„์„ฑํ•œ ๋‹ค์Œ์—์•ผ ์ตœ์ ํ™”๋ฅผ ๊ณ ๋ คํ•ด๋ณผ ์ฐจ๋ก€๊ฐ€ ๋œ๋‹ค. ๋ฌผ๋ก  ์„ฑ๋Šฅ์— ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•  ๊ฒฝ์šฐ์— ํ•œ์ •๋œ๋‹ค.

๐ŸŽฏ ์•„์ดํ…œ 68. ์ผ๋ฐ˜์ ์œผ๋กœ ํ†ต์šฉ๋˜๋Š” ๋ช…๋ช… ๊ทœ์น™์„ ๋”ฐ๋ฅด๋ผ.

ํ‘œ์ค€ ๋ช…๋ช… ๊ทœ์น™์„ ์ฒดํ™”ํ•˜์—ฌ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ฒ ์–ด ๋‚˜์˜ค๋„๋ก ํ•˜์ž. ์ฒ ์ž ๊ทœ์น™์€ ์ง๊ด€์ ์ด๋ผ ๋ชจํ˜ธํ•œ ๋ถ€๋ถ„์ด ์ ์€ ๋ฐ ๋ฐ˜ํ•ด, ๋ฌธ๋ฒ• ๊ทœ์น™์€ ๋” ๋ณต์žกํ•˜๊ณ  ๋Š์Šจํ•˜๋‹ค. ์ž๋ฐ” ์–ธ์–ด ๋ฉด์„ธ์˜ ๋ง์„ ์ธ์šฉํ•˜์ž๋ฉด "์˜ค๋žซ๋™์•ˆ ๋”ฐ๋ผ์˜จ ๊ทœ์น™๊ณผ ์ถฉ๋™ํ•œ๋‹ค๋ฉด ๊ทธ ๊ทœ์น™์„ ๋งน์ข…ํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค."

์‹๋ณ„์ž ํƒ€์ž… ์˜ˆ
ํŒจํ‚ค์ง€์™€ ๋ชจ๋“ˆ org.junit.jupiter.api, com.google.common.collect
ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค Stream, FutureTask, LinkedHashMap, HttpClient
๋ฉ”์„œ๋“œ์™€ ํ•„๋“œ remove, groupingBy, getCrc
์ƒ์ˆ˜ ํ•„๋“œ MIN_VALUE, NEGATIVE_INFINITY
์ง€์—ญ๋ณ€์ˆ˜ i, denom, houseNum
ํƒ€์ž… ๋งค๊ฐœ๋ณ€์ˆ˜ T, E, K, V, X, R, U, V, T1, T2

์ฐธ๊ณ  ์ž๋ฃŒ

Joshua Bloch, ใ€ŽEffective Java 3/Eใ€, ๊ฐœ์•ž๋งต์‹œ ์˜ฎ๊น€, ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ธ์‚ฌ์ดํŠธ(2018)
http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788966262281&orderClick=LEa&Kc=

728x90
๋ฐ˜์‘ํ˜•