20210118 - java-squid/effective-java GitHub Wiki
ํ๊ณ
Han
- ์คํฐ๋ ๊ถค๋์ ์ฌ๋ผ๊ฐ๋ ๋ฐ ์๊ฐ์ด ์ข ๊ฑธ๋ฆด ๊ฒ ๊ฐ๋ค
- ์ ๋ฒ์ฃผ์ ๋์ด ๋๋ฌด ๋ง์ด ์์, ๋๊ฐ์ง ์์๋ค.
David
- ๋ค์์ฃผ ๊ฐ๊ฐ
- ์๊ณ ๋ฆฌ์ฆ ํธ๋ ์ค.
- ์ฌ์ด๊ฑฐ ๋ถํฐ ํ์..
- ์ดํํฐ๋ธ ์๋ฐ ์ข ์ด๋ ค์ด ๊ฒ ์์์.
Pyro
- CS ๊ณต๋ถํ๋ ๊ฑฐ๋ ์์ดํ ์ด ์ข ๊ฒน์ณ์ ์ข์์.
Roach
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ๊ณต๋ถํ๋ฉด์, ์ด๋ฒ์ฃผ ์์ดํ ์ด๋ ๊ฒน์ณ์ ์ดํดํ๋ ๋ฐ ๋์์ ๋ฐ์ ๋ฏ.
- Database ๊ธฐ์ด ๊ณต๋ถ์ค
- CS 5์ฃผ์์ ๊ธฐ์ด ์ ๋ฆฌ.
Items
item46
- Side effect๊ฐ ์๋ค.
- ์์ฑํ ์ฝ๋๋ก ์ธํด์, ์ ์์ ์ผ๋ก ์๋ํ๋ ์ฝ๋์ ์ํฅ์ ๋ฏธ์น๋ฉด ์๋๋ค.
- ๋ฐฉ์งํ๊ธฐ ์ํด์, ํด๋ก์ ์จ๋ผ
- ๊ทธ๊ฒ ๋ณด๋ค๋ ํจ์์์ ์ฌ์ฉํ๋ ๋ณ์๋, ์ฐธ์กฐํ๋ ์ธ๋ถ ๋ณ์๊ฐ ๋ถ๋ณ์ด์ด์ผ ์ฌ์ด๋ ์ดํํธ๊ฐ ์์ ๊ฒ
- Side effect๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํ ๋ฐฉ๋ฒ?
- ์ฌ์ฉ๋๋ ๋ณ์๊ฐ Immutable
- ์ํ๊ฐ ์์ ์กด์ฌํ์ง ์๊ฑฐ๋
- Pure Function ์์ ํจ์
- ๊ทธ๋ ์ง๋ง ์์ํจ์๋ง ๊ฐ์ง๊ณ ๊ฐ๋ฐํ๊ธฐ๋ ์ด๋ ต๋ค
- Closure
function counter() { let count == 0; function realCounter() { return ++count; } return realCounter(); }
- realCounter๋ ์ธ๋ถ์์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์
- ์ด ํจ์๋ฅผ ๊ฐ์ธ๋ counter() ํด๋ก์ ๋ก ๊ฐ์ธ๋ฉด, ์ด counter()๋ ์์ ํจ์์ด๋ค.
- ํด๋ก์ ๋ ํจ์๋ฅผ ์ผ์ปซ๋ ๊ฒ ์๋.
- enclosure
- ํ์ค์ผ
item47
- ๋น์ด์๋ ๋ถ๋ถ์์ ์ด๋ค ๋ถ๋ถ์ ๊ตฌํํด์ค์ผํ ๊น?
- AbstractList์ get์ ๊ตฌํํด์ฃผ๋ฉด, Iterator๊ฐ ์ ์์ ์ผ๋ก ๋์ํ๋ค.
Generator
- ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น์ ํ์ง ์๊ณ , ์์๋๋ก ๋ฐํํ ์ ์๋๋ก ํด์ฃผ๋ ๊ฒ
- ๋นํธ ์ฐ์ฐ
- AbstractList๋ฅผ ๋ฐํํ ์ ์๋ค๋ ๊ฒ์ด Generator ๊ฐ์ด ๋์ํ ์ ์๋ค๋ ์ ์ด ์ค์ํ ์ .
- Intellij command -> Go to...๋ฅผ ์ด์ฉ
item48
- ForkJoinPool
- static
commonPool()
, ์๋ฐ ์์๋ ๋, ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑ๋๋ ์น๊ตฌ์. - ๊ธฐ๋ณธ์ ์ผ๋ก ๋ณ๋ ฌ์ ์ธ ์ฐ์ฐ์ ํ ๋ ์ด pool์ ์๋ ์ค๋ ๋๋ฅผ ๊ฐ์ง๊ณ ์ฌ์ฉํจ.
- static
item49
- assertํ๋ ๊ฒ์ export ํ์ง ์๋ unpublicํ library์์๋ง ์ฌ์ฉํ๋ ๊ฒ ์ข๋ค.
- spring ์์ ์ ๊ณตํ๋
@valid
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ๋ซ๋ค.
item50
- setter์ ๋ํ ์ฌ์ฉ์ ์ฃผ์ํด์ผํ ๋ฏ.
- ๊ณต๊ฒฉ์ ๋๋์ฒด ๋๊ฐํ๋ ๊ฑฐ๋?
- ์ธ๋ถ์์ ์ผ์ด๋๋ ๊ณต๊ฒฉ๋ณด๋ค๋,
- ๋ด๊ฐ ์์ฑํ ์ฝ๋์ ๋ํด, ๋ค๋ฅธ ํ์์ด ์๋ชป ์ฌ์ฉํ๋ ๊ฒฝ์ฐ...
- item39
- reflection์ ์ด์ฉํ ๋ถ๋ถ.
๋ง๋ฌด๋ฆฌ
- ๋ค์์ฃผ ์งํ์ David