์ด ๊ธ์ ์ธ์ฌ์ดํธ์ EffectiveJava 3rd Edition์ ๊ณต๋ถํ๋ฉฐ ์์ฑํ ๊ธ์ ๋๋ค. ์ฑ ์ ๋ฐํ์ผ๋ก ์ถ๊ฐ์ ์ธ ๋ด์ฉ์ ๋ง๋ถ์์ต๋๋ค. ์ ๋ฆฌ๋ ๋ด์ฉ ์ด์ธ์๋ ์ข์ ๋ด์ฉ์ด ๋ง์ด ๋ด๊ฒจ ์๊ธฐ ๋๋ฌธ์ ๊ผญ ์ฑ ์ ๊ตฌ๋งคํด์ ๊ณต๋ถํด ๋ณด์ค ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค.
1. package-private
์๋ ๊ทธ๋ฆผ์์ ์ผ์ชฝ๊ณผ ๊ฐ์ ํด๋์ค๋ ๋ฐ์ดํฐ ํ๋์ ์ง์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ ์บก์ํ์ ์ด์ ์ ์ ๊ณตํ์ง ๋ชปํฉ๋๋ค. API๋ฅผ ์์ ํ์ง ์๊ณ ๋ ๋ด๋ถ ํํ์ ๋ฐ๊ฟ ์ ์๊ณ ๋ถ๋ณ์์ ๋ณด์ฅํ ์ ์์ผ๋ฉฐ ์ธ๋ถ์์ ํ๋์ ์ ๊ทผํ ๋ ๋ถ์ ์์ ์ ์ํํ ์๋ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐ๋ผ์ ํ๋๋ฅผ ๋ชจ๋ private์ผ๋ก ๋ฐ๊พธ๊ณ ์ ๊ทผ์๋ฅผ ๋ง๋ค์ด์ ์ด๋ฅผ ํตํด ํด๋์ค์ ์ ๊ทผํ ์ ์๊ฒ ํด์ผ ํฉ๋๋ค.
ํ์ง๋ง package-private ํน์ private ์ค์ฒฉ ํด๋์ค๋ผ๋ฉด ๋ฐ์ดํฐ ํ๋๋ฅผ ๋ ธ์ถํด๋ ํฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ํด๋ผ์ด์ธํธ ์ฝ๋๊ฐ ํด๋์ค ๋ด๋ถ์ ๋ฌถ์ด๊ธฐ๋ ํ์ง๋ง ํด๋ผ์ด์ธํธ๋ ์ด ํด๋์ค๋ฅผ ํฌํจํ๋ ํจํค์ง ์์์๋ง ๋์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ฅผ ํตํด ํจํค์ง ๋ฐ๊นฅ์ ์ฝ๋๋ ์์ ํ์ง ์๊ณ ๋ฐ์ดํฐ์ ํํ ๋ฐฉ์์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. private ์ค์ฒฉ ํด๋์ค๋ ์์ ๋ฒ์๊ฐ ๋ ์ข๊ธฐ ๋๋ฌธ์ ์ด ํด๋์ค๋ฅผ ํฌํจํ๋ ์ธ๋ถ ํด๋์ค๊น์ง๋ก ์ ํ๋ฉ๋๋ค.
๋ถ๋ณ ํ๋๋ฅผ ๋ ธ์ถํ Time ํด๋์ค. final ํค์๋๋ฅผ ํตํด ์ด๊ธฐํ ์ดํ ๋ณํ์ง ์๋๋ก ๊ฐ์ ํ๋ฉด ์ด๋์ ๋ ์ฌ์ฉํ ์ ์์ง๋ง ์ ๋ ์ข์ ๋ฐฉ๋ฒ์ ์๋๋๋ค. * final ํค์๋๋ ์์ฑ์์์ ํญ์ ์ด๊ธฐํ๋ฅผ ํด์ฃผ์ด์ผ ํ๋ฉฐ ์์ํ์ ์ธ ๊ฒฝ์ฐ ์ด๊ธฐํ ๋๋ฉด ๋ณํ์ง ์๋๋ค. ๊ฐ์ฒดํ์ ์ ๊ฒฝ์ฐ ์ํ๋ ๋ณํ์ง๋ง ์ฐธ์กฐ๊ฐ์ ๋ณํ์ง ์๋๋ค.
2. Conclusion
public ํด๋์ค๋ ์ ๋ ๊ฐ๋ณ ํ๋๋ฅผ ์ง์ ๋ ธ์ถํด์๋ ์ ๋ฉ๋๋ค. ๋ถ๋ณ ํ๋์ผ ๊ฒฝ์ฐ์๋ ๋ ์ํํ์ง๋ง ์์ ํ ์์ฌํ ์๋ ์์ต๋๋ค. ํ์ง๋ง package-private ํด๋์ค๋ private ์ค์ฒฉ ํด๋์ค์์๋ ์ข ์ข ํ๋๋ฅผ ๋ ธ์ถํ๋ ํธ์ด ๋์ ๋๋ ์์ต๋๋ค.
'๐ฅDEV > Java || Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก์/ํ๋ก์ ๊ตฌํ์์ ๋ง์ฃผ์น ๋์์ฑ (0) | 2022.09.19 |
---|---|
๋๋ฉ์ธ ๋ก์ง์ด ํญ์ ์ข์๊น? (0) | 2022.09.19 |
ํ๋์ ๋ ํฌ์งํ ๋ฆฌ๋ก ํ์ ์ํฐํฐ ๊ด๋ฆฌํ๊ธฐ (0) | 2022.07.31 |
๊ฐ์ ๊ฒ์ฆํ๋ ์์น๋ ์ด๋๊ฐ ์ข์๊น? (0) | 2022.07.30 |
@Component์ @Configuration์ ์ฐจ์ด (0) | 2022.07.24 |
๋๊ธ