20210201 - java-squid/effective-java GitHub Wiki
ํ๊ณ
Sunny
- ๋ฉด์ 1ํ ๋ดค๋ค...
- ๋ฌด์ง๊ฐ๊ณฐ ์ฑ
(๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์ ์
๋ฌธ) ๋ค ๋ดค๋ค!
- ๋ง์ง๋ง ๋ถ๋ถ์ ํธ๋์ญ์
์ ๋ํ ๋ถ๋ถ์ด ๋์์ ์ข์๋ค.
- ์ด๋ฒ ์ดํํฐ๋ธ ์๋ฐ ์์ดํ
๋ค์ ํด๋ฆฐ ์ฝ๋์ ๋์ค๋ ๋ด์ฉ๋ค๊ณผ ์ฐ๊ด์ด ์์ด์ ๊ฐ์ด ๋ณด๋ฉด์ ๊ณต๋ถํ๋ค.
Han
- ์ด๋ฒ ์์ดํ
์ ๊ทธ๋ฆฌ ์ด๋ ต์ง ์์๋ค. ์์ด ๋ง์์ ๋คํ.
- ๊ฐ๋ฅํ๋ฉด ์์ดํ
ํ๋๋น ์ง๋ฌธ, ๋๋์ ๋จ๊ธฐ๋ ค๊ณ ๋
ธ๋ ฅ.
- ์ด๋ฒ์ฃผ๋ ๋ฌด๋ํ๋ค. ๋ค๋ง ์ผ๊ต์ฐจ๊ฐ ์ปค์ ๊ฐ๊ธฐ๊ฑธ๋ฆฌ๊ธฐ ์ฝ๋ค. ๊ฑด๊ฐ ์กฐ์ฌํ์.
David
- ์ด๋ฒ ํ๊ธฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์
์ ์์. ํ๊ธฐ ์ด๋ฐ์ SQL ๊ณต๋ถ. ์ผ์ฃผ์ผ ๋์ ๊ณต๋ถํ๋ ๋ด์ฉ์ด ์ฝ์ฟผ์์ ๋ฐฐ์ ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ง์๋ค.
- ์์
์์ ์ฌ๋ฌ๊ฐ์ง ๋ฐฐ์ ์. DB๋ง๋๋ ์์
์ด๋ผ ๊ธฐ๋๊ฐ ํฌ๋ค.
- ์๊ณ ๋ฆฌ์ฆ ์ฑ๋์์ ์๊ณ ๋ฆฌ์ฆ 1๊ฐ ์ด์ ํ๋ฉด์ ๋งค์ผ ๊ธฐ๋กํ๋ ค๊ณ ๋
ธ๋ ฅ.
- ํ๋ฉด ํ ์๋ก ํธ๋ ์๋๋ ๋นจ๋ผ์ง๊ณ ํ๊ธฐ ์ฌ์์ง๊ณ ์๋ค. ๋ง์กฑ.
- ์์ดํ
๋ค์ด ๋๋ถ๋ถ ์งง๊ณ , ์ฌ์ ๋ค.
Pyro
- ์ดํํฐ๋ธ ์๋ฐ ์ด๋ฒ์ฃผ ์์ดํ
๋ค์ ์ง๋ ํจ์ํ๋ณด๋ค ์ฌ์ ๋ค.
- CS10์์ ๋์ปค, ํด๋ผ์ฐ๋๋ฅผ ์ดํดํ๋๋ฐ ๊ณ ์ํ๋ค.
- Honux์ ๋ฌธ์ . batch insert, bulk insert ์๋. ๋๊ฐ์ ์ฐจ์ด์ ์ ์ ์ ์์๋ค.
Roach
- ์ํ๊น๊ฒ๋ ๊ณต๋ถ๊ฐ ์ ์๋์๋ค. -> ์๊ณ ๋ฆฌ์ฆ๋ง ํ์์.
- ํ๋ฃจ์ ํ๋์ฉ ํธ๋ ๋๊ณ ์๋ค. ์ด๋ ค์ด ๋ฌธ์ ๋ ์์ ํ๊ณ ์ฌ์ด ๋ฌธ์ ์์ฃผ๋ก ์๋ํ๊ณ ์์. -> ๋์ค์ ์ฐจ์ฐจ ์ด๋ ค์ด ๋ฌธ์ ๋ฅผ ํ ๊ฒ.
- ๋ฐฑ์ค๋ณด๋ค ํ๋ก๊ทธ๋๋จธ์ค๊ฐ ๋ ์ฌ๋ฐ์. ํผ์ฆํธ๋๋๋์ด๋ผ ๋ ๋์.
- ๊ฐ์ธ์ ์ผ๋ก ์ด๋ ค์ด ๋ด์ฉ์ ์์๋ค. ๋ฌธ์์ด ๊ดํ ๋ด์ฉ์์ ์ด๊ฑฐ ํ์
์ ๋ํ ๋ด์ฉ์ด ๋์๋๋ฐ ํ๋๊ฐ ์ดํด๊ฐ ์ ๋์ง ์์๋ค.
- 34์ฅ์ ์ฝ๊ณ , ํ์ด ๋๊ธ์ ๋ณด๋ ์ดํด๊ฐ ๋์๋ค.
๊ทธ ์ธ
Items
Item56
- ๋์ค์ ๋ฌธ์์์ฑํ ๊ธฐํ๊ฐ ์์ผ๋ฉด ์ด ์์ดํ
์ ๋ณด๊ณ ์์ฑํ๋ฉด ์ข๊ฒ ๋ค.
- ์ด์ ์ ๋ฐฐ ๊ฐ๋ฐ์์ ๋ฌธ์ํ ํํ๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉด ๋ ์ข์๋ฏํ๋ค.
- ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ง ์ฝ์ ๋ ์๋ฐ๋
์ ๋ง๋ค๋ฉด ์ข๊ฒ ์ง๋ง ๋ชจ๋ฐ์ผ, ํ๋ก ํธ ๊ฐ๋ฐ์์ ๊ฐ์ด ํ์
ํ ๋ ๊ณ ๋ฏผํด์ผํ๋ค.
- ๊ทธ๋ฌ๋ ํ์
์ ํ๋ค๋ฉด ๋ฌธ์ํ๋ ์ ๋ง ์ค์ํ๋ค.
Item57
- ์ง์ญ๋ณ์ ๋ฒ์ ์ต์ํ๊ฐ ํต์ฌ.
- ์ธ๊ฐ์ง ์์ฝ
- ์ง์ญ ๋ณ์๋ฅผ ๊ฐ์ฅ ์ฒ์ ์ฐ์ผ ๋ ์ ์ธํ๋ผ.
- ์ง์ญ ๋ณ์๋ฅผ ์ ์ธ๊ณผ ๋์์ ์ด๊ธฐํ ํ๋ผ.
- ๋ฉ์๋๋ฅผ ์๊ฒ ๋ง๋ค๊ณ , SRP ๋ฅผ ์ง์ผ๋ผ
- ์ด ์์ดํ
์ ์ ์ฉํ๋ ์ด์ ๋ SRP๋ฅผ ์งํค๊ธฐ ์ํ ๊ฒ. ์ด ์์ดํ
์ SRP๋ ํจ์๊ฐ ์๋ ๋ธ๋ก๋จ์๋ก ์ขํ์ ์ ์.
Item58
- for-each
- ์ผ๊ธ ๊ฐ์ฒด์ ์์ดํ
18๊ณผ ์ฐ๊ด๊ด๊ณ๊ฐ ์์.
Item59
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉํ์. -> ์ฝ๋์ ํ์ง์ ๋์ฌ์ค๋ค.
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฒ์ฆ๋ ๊ฒ์ ์ฌ์ฉํ์. -> ์๊ฐ๋ ๋ ๋ฏ์ด์ ๊ณต๋ถํ์.
- ์์ดํ
18์ ๋ํผํจํด์ ์ฌ์ฉํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(๊ฒ์ฆ๋ ๊ฒ)์ ํ์ฉํ์.
Item60
- ํ์ง์์๋ BigDecimal์ ๋ณํํ ๋ ๋ง์ด ์ฌ์ฉํ๋ค.
- BigDecimal์ ๋ถํธํ๊ฒ ๋ง๋ค.
Item61
- IntegerCache์ ์ ์ฅํ์ฌ -128 ~ 127๊น์ง๋ ์ฃผ์๊ฐ๋น๊ต๊ฐ ๊ฐ๋ฅ.
- String์ static Area์ ์ ์ฅ.
- boxing์ ํ ๋๋ง๋ค, ๊ฐ์ฒด๊ฐ ๊ณ์ ์์ฑ๋๋ ๊ฑด ์ฑ๋ฅ์ ๋ถ๋ด๋ ๋ฏ
Item62
- ThreadLocal์ ๊ฐ ์ฐ๋ ๋์ ๊ณ ์ ์ ์ด๋ฆ์ ๋ถ์ผ ์ ์๋ค. -> String๋ณด๋ค๋ Key ํด๋์ค๋ฅผ ๋ง๋ค์ด ๊ณ ์ ์ ์ฐ๋ ๋๋ก ์ง์ ์ด ๊ฐ๋ฅ.
Item63
- String์ด n๊ฐ ๊ฐ ์๋ค๋ฉด ์๋ ์๊ฐ์ n^2๋ค.
- String + String์ ํ ๊ฒฝ์ฐ ๋ณต์ฌ๋ณธ ํ๋ ๋ ์๊ธด๋ค.
Item64
- ๊ฒฐ๊ณผ์ ์ผ๋ก ์ ํฉํ ์ธํฐํ์ด์ค๋ฅผ ์ฐ๊ณ ์์ผ๋ฉด ๋ถ๋ชจ ํด๋์ค๋ฅผ ์ฌ์ฉํ์.
- ๋ฐ๊พธ๊ธฐ ์ฝ๊ธฐ ๋๋ฌธ์ ๊ผญ ์ฌ์ฉํ์.
- ์คํ๋ง์ IoC, DI
- SOLID์์น์ O,L,D์ ๊ด๋ จ.
๋ง๋ฌด๋ฆฌ