item 87 incheol - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
์์ดํ 87 ์ปค์คํ ์ง๋ ฌํ ํํ๋ฅผ ๊ณ ๋ คํด๋ณด๋ผ
์ข ์ข ๋ค์ ๋ฆด๋ฆฌ์ค์์ ์ ๋๋ก ๋ค์ ๊ตฌํํ๊ธฐ๋ก ํ๊ณ , ์ด๋ฒ ๋ฆด๋ฆฌ์ค์์๋ ๊ทธ๋ฅ ๋์๋ง ํ๋๋ก ๋ง๋๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๋ณดํต์ ํฌ๊ฒ ๋ฌธ์ ๋์ง ์๋ ์ ๋ต์ด๋ค. ํ์ง๋ง ํด๋์ค๊ฐ Serializab le์ ๊ตฌํํ๊ณ ๊ธฐ๋ณธ ์ง๋ ฌํ ํํ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ๋ค์ ๋ฆด๋ฆฌ์ค ๋ ๋ฒ๋ฆฌ๋ ค ํ ํ์ฌ์ ๊ตฌํ์ ์์ํ ๋ฐ์ด ๋ฌถ์ด๊ฒ ๋๋ค. ์ค์ ๋ก๋ BigInteger ๊ฐ์ ์ผ๋ถ ์๋ฐ ํด๋์ค๊ฐ ์ด ๋ฌธ์ ์ ์๋ฌ๋ฆฌ๊ณ ์๋ค.
๋จผ์ ๊ณ ๋ฏผํด๋ณด๊ณ ๊ด์ฐฎ๋ค๊ณ ํ๋จ๋ ๋๋ง ๊ธฐ๋ณธ ์ง๋ ฌํ ํํ๋ฅผ ์ฌ์ฉํ๋ผ
์ง๋ ฌํ ํํ๋ ์ ์ฐ์ฑ, ์ฑ๋ฅ, ์ ํ์ฑ ์ธก๋ฉด์์ ์ ์คํ ๊ณ ๋ฏผํ ํ ํฉ๋นํ ๋๋ง ์ฌ์ฉํด์ผ ํ๋ค. ๊ฐ์ฒด์ ๋ฌผ๋ฆฌ์ ํํ๊ณผ ๋ ผ๋ฆฌ์ ๋ด์ฉ์ด ๊ฐ๋ค๋ฉด ๊ธฐ๋ณธ ์ง๋ ฌํ ํํ๋ผ๋ ๋ฌด๋ฐฉํ๋ค.
์ง๋ ฌํ ํํ๋ฅผ ์ฌ์ฉํ ๋ ๋ค์์ ๋ฌธ์ ๋ฅผ ๊ณ ๋ คํด๋ณด์
public final class StringList implements Serializable {
private int size = 0;
private Entry head = null;
private static class Entry implements Serializable {
String data;
Entry next;
Entry previous;
}
// ... ์๋ต
}
- ๋ ผ๋ฆฌ์ ์ผ๋ก ์ด ํด๋์ค๋ ์ผ๋ จ์ ๋ฌธ์์ด์ ํํํ๋ค.
- ๋ฌผ๋ฆฌ์ ์ผ๋ก๋ ๋ฌธ์์ด๋ค์ ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ์ฐ๊ฒฐํ๋ค.
- ์ด ํด๋์ค์ ๊ธฐ๋ณธ ์ง๋ ฌํ ํํ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ ๋ ธ๋์ ์๋ฐฉํฅ ์ฐ๊ฒฐ ์ ๋ณด๋ฅผ ํฌํจํด ๋ชจ๋ ์ํธ๋ฆฌ๋ฅผ ๊ธฐ๋กํ๋ค.
๊ณ ๋ คํด์ผ ํ ๋ฌธ์ ์
- ๊ณต๊ฐ API๊ฐ ํ์ฌ์ ๋ด๋ถ ํํ ๋ฐฉ์์ ์๊ตฌํ ๋ฌถ์ธ๋ค.
- ๋๋ฌด ๋ง์ ๊ณต๊ฐ์ ์ฐจ์งํ ์ ์๋ค.
- ์๊ฐ์ด ๋๋ฌด ๋ง์ด ๊ฑธ๋ฆด ์ ์๋ค.
- ์คํ ์ค๋ฒํ๋ก๋ฅผ ์ผ์ผํฌ ์ ์๋ค.