์ง๋ ํฌ์คํ Java ํด๋์ค ์ค๊ณ ์์ ํ๊ฒ ์ ํ๊ธฐ ํธ์์๋ ํด๋์ค ์ค๊ณ์ ๊ด๋ จํ์ฌ ๋ค์ ๋ด์ฉ๋ค์ ์ดํด๋ดค์๋๋ฐ์,
- ์์ฑ์๋ฅผ ํตํด ์ ์์ ์ธ ๊ฐ ์ค์ ํ๊ธฐ
- ๋ณ์๋ฅผ ๋ถ๋ณ์ผ๋ก ๋ง๋ค์ด์ ์์ํ์ง ๋ชปํ ๋์ ์๋ฐฉํ๊ธฐ
- ๋ถ๋ณ์ ๋ณ๊ฒฝํด์ผ ํ๋ ๊ฒฝ์ฐ, ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ธฐ
- ๋ฉ์๋ ๋งค๊ฐ๋ณ์์ ์ง์ญ ๋ณ์๋ ๋ถ๋ณ์ผ๋ก ๋ง๋ค๊ธฐ
- ๋ฉ์๋์ ์๋ชป๋ ๊ฐ์ ์ ๋ฌ์ ์๋ฐฉํ๊ธฐ
์ด๋ฒ ํฌ์คํ ์์๋ ์์ง๋๋ฅผ ๊ธฐ์ค์ผ๋ก ํด๋์ค ์ค๊ณ์ ๊ด๋ จ๋ ๋ด์ฉ์ ์ ๋ฆฌํด ๋ณด๊ฒ ์ต๋๋ค.
์์ง๋๋, 'ํด๋์ค ๋ด๋ถ์ ์๋ ๋ฐ์ดํฐ์ ๋ก์ง ์ฌ์ด์ ๊ด๊ณ๊ฐ ์ผ๋ง๋ ๊ฐํ์ง ๋ํ๋ด๋ ์งํ' ๋ก ์ ์ํฉ๋๋ค.
1. static ๋ฉ์๋ ์ค์ฉ
static ๋ฉ์๋๋ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ์๊ณ ์ฌ์ฉํ ์ ์๋ค๋ ํธ๋ฆฌํจ์ด ์์ง๋ง, ๋ค๋ฅธ ํํธ์ผ๋ก๋ ์์ง๋๊ฐ ๋ฎ์์ง ์ ์์ต๋๋ค.
static ๋ฉ์๋(add)๋ ์ธ์คํด์ค ๋ณ์(money)๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์, ์ด๋ ํ ๋ฉ์๋๋ฅผ static์ผ๋ก ๋ง๋ ์์ ์์๋ถํฐ ์ด๋ฏธ ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ ๋ก์ง ์ฌ์ด์ ๊ดด๋ฆฌ๊ฐ ์๊ธฐ๊ฒ ๋ฉ๋๋ค. ์ด๋ก ์ธํด ๋น์ฐํ ์์ง๋๊ฐ ๋ฎ์์ง ์๋ฐ์ ์์ต๋๋ค.
๋ค์ํ ๋ถ์ ํจ๊ณผ๋ก๋ถํฐ ํด๋์ค๊ฐ ์ค์ค๋ก๋ฅผ ๋ณดํธํ ์ ์๊ฒ, ๋ฐ์ดํฐ์ ๋ก์ง์ ๋ชจ์ ์์ง๋๊ฐ ๋์ ๊ตฌ์กฐ๋ก ์ค๊ณํ๋ ๊ฒ์ด ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ ๊ธฐ๋ณธ ์์น์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์์ง๋๋ฅผ ๋์ด๋ ค๋ฉด, '์ธ์คํด์ค ๋ณ์'์ '์ธ์คํด์ค ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๋ก์ง'์ ๋์ผํ ํด๋์ค์ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
์ฌ์ค ์์ ๊ฐ์ ๋ฉ์๋๋ ์ธ์คํด์ค ๋ณ์์ธ discountRate๋ฅผ ์ฌ์ฉํ์ง ์๋ ํ์์ด๊ธฐ ๋๋ฌธ์ static ๋ฉ์๋์ ๋์ผํ ๋ฌธ์ ๋ฅผ ๊ฐ์ง๊ฒ ๋์ด ์์ง๋๋ฅผ ๋ฎ์ถ ์ ์์ต๋๋ค.
(์ ๋ฉ์๋์์ static ํค์๋๋ฅผ ๋ถ์ฌ๋ ์๋ฌด ๋ฌธ์ ์์ด ๋์ํฉ๋๋ค.)
๋ฐ๋ผ์ ์ด์ ํฌ์คํ ์์ ์ดํด๋ณธ ๊ฒ์ฒ๋ผ, ์ ์ ํ ํด๋์ค (Money ๋ฑ)์์ ๊ณ์ฐํ๋๋ก ์ค๊ณํ๋ฉด ํด๊ฒฐํ ์ ์์ต๋๋ค.
1.1 static ๋ฉ์๋๋ ๊ทธ๋ผ ์ธ์ ์ฌ์ฉํด์ผ ์ข์๊น์?
์์ง๋์ ์ํฅ์ ๋ฐ์ง ์๋๋ค๋ฉด, statis ๋ฉ์๋๋ฅผ ์ฌ์ฉํด๋ ๊ด์ฐฎ๋ค๊ณ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ก๊ทธ ์ถ๋ ฅ, ์ค๋ฅ ํ์ธ, ๋๋ฒ๊น , ์์ธ ์ฒ๋ฆฌ ๋ฑ์ ๊ธฐ๋ฅ์์๋ static ๋ฉ์๋๋ฅผ ์ฌ์ฉํด๋ ๊ด์ฐฎ์ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ Java์์ static ๋ฉ์๋๋ฅผ ๊ตฌํํด๋์ ๊ฐ์ฅ ๋ํ์ ์ธ ํด๋์ค๋ Collections, Arrays ๋ฑ๋ฑ์ ๋ณต์ํ ๋ช ์ฌ๋ฅผ ์ง๋ ํด๋์ค์ ๋๋ค.
(์ ํด๋์ค๋ค์ ๋ชจ๋ ๋ฉ์๋๋ค์ด statis ์ผ๋ก ๊ตฌํ๋์ด ์์ต๋๋ค.)
๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ ํด๋์ค์ ๋ค์ด๋ฐ์ ๋ณดํต ๋ณต์ํ ๋ช ์ฌ๋ก ์ง์ต๋๋ค. [Effective Java Item 68]
๋ฐ๋ผ์ Collections, Arrays ๋ฑ๋ฑ ๊ฐ์ฒด ์์ฑ์ ํ์ ์๊ณ ๋ค์ํ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ ํด๋์ค๋ static ๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
2. ์ด๊ธฐํ ๋ก์ง ๋ถ์ฐ
์ด๊ธฐํ ๋ก์ง์ด ๋ถ์ฐ๋์ด๋ ์์ง๋๊ฐ ๋ฎ์ ๊ตฌ์กฐ๊ฐ ๋์ด ๋ฒ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ์ผํ๋ชฐ ์ฌ์ดํธ์์ ํฌ์ธํธ๋ฅผ ๊ฐ ๊ฐ์ฒด๋ก ์ค๊ณํ GiftPoint ํด๋์ค๋ฅผ ์ดํด๋ณผ๊ฒ์.
ํ์ค ํ์์ ๊ฒฝ์ฐ 3000 ํฌ์ธํธ๋ฅผ ์ ๊ณตํ๊ณ , ํ๋ฆฌ๋ฏธ์ ํ์์ ๊ฒฝ์ฐ 10000 ํฌ์ธํธ๋ฅผ ์ ๊ณตํ๋ค๊ณ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์ฑ์๊ฐ public ์ด๊ธฐ๋๋ฌธ์ ์๋ํ์ง ์์ ์ฉ๋๋ก ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
ํ์ค ํ์, ๋ฉค๋ฒ์ญ ํ์ ์ธ์ ํ์ ์ ํ์ด ๋์ด๋ ์๋ก ์๋ํ์ง ์์ ์ฉ๋๋ก ์ฌ์ฉํ ํ๋ฅ ์ด ๋์์ง๊ฒ ๋ฉ๋๋ค.
์ด๋ฌํ ๊ฒฝ์ฐ, private ์์ฑ์์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ชฉ์ ์ ๋ง๊ฒ ์ด๊ธฐํํ๋ ์ ๋ต์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์ ๊ฐ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ฅผ ํตํด ๋ฉ์๋๋ช ๋ง ๋ณด๊ณ ๋ ์ด๋ค ์ ํ์ ํ์์ธ์ง ๋ฐ๋ก ํ์ธ์ด ๊ฐ๋ฅํ๊ณ ,
ํฌ์ธํธ ๋ณ๊ฒฝ์ด ํ์ํ๋๋ผ๋ GiftPoint ํด๋์ค๋ง ํ์ธํ์ฌ ๊ฐ๋จํ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
3. ๋งค๊ฐ๋ณ์๊ฐ ๋๋ฌด ๋ง์ ๊ฒฝ์ฐ
๋งค๊ฐ๋ณ์๊ฐ ๋๋ฌด ๋ง์ ๊ฒฝ์ฐ ์์ง๋๊ฐ ๋ฎ์์ง๊ธฐ ์ฝ์ต๋๋ค.
์๋ฅผ ๋ค์ด, RPG ๊ฐ์ ๊ฒ์์์ MP(๋งค์ง ํฌ์ธํธ)์ ๊ด๋ จํ์ฌ ๋ค์๊ณผ ๊ฐ์ ์ฌ์์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
- ๋ง๋ฒ์ ์ฌ์ฉํ๋ฉด ๋งค์งํฌ์ธํธ๊ฐ ์ผ์ ๋ ๊ฐ์
- ํ๋ณต ์์ดํ ๋ฑ์ ์ฌ์ฉํ๋ฉด ๋งค์งํฌ์ธํธ๊ฐ ์ผ์ ๋ ํ๋ณต
- ๋งค์งํฌ์ธํธ๋ ์ต๋๊ฐ์ ๊ฐ์ง
- ๋งค์งํฌ์ธํธ๋ ์ต๋๊ฐ๊น์ง๋ง ํ๋ณต์ด ๊ฐ๋ฅ
- ์ผ๋ถ ์ฅ๋น๋ ๋งค์งํฌ์ธํธ ์ต๋๊ฐ์ ๋์ด๋ ํจ๊ณผ
์ ๋ฉ์๋๋ ๋ง์ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์ ์ค์๋ก ์๋ชป๋ ๊ฐ์ ๋์ ํ ๊ฐ๋ฅ์ฑ์ด ๋๊ณ , ํ๋ณต ์ด์ธ์ ๋งค์งํฌ์ธํธ ์ต๋๊ฐ ์ฆ๊ฐ๋ ๋ฑ ๋ง์ ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋งค๊ฐ๋ณ์๊ฐ ๋ง์์ง๊ณ ์์ต๋๋ค.
๋ฐ๋ผ์ ๋งค๊ฐ๋ณ์๊ฐ ๋ง์์ง๋ ๋ฌธ์ ๋ฅผ ํผํ๋ ค๋ฉด, ๊ฐ๋ ์ ์ผ๋ก ์๋ฏธ ์๋ ํด๋์ค๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
ํต์ฌ์ ๋งค์งํฌ์ธํธ ์ ๋๋ค. ์ด์ ๊ด๋ จ๋ ๊ฐ๋ค์ ์ธ์คํด์ค ๋ณ์๋ก ๊ฐ์ง๊ณ , ๊ด๋ จ ๋ก์ง์ ์์ฑํฉ๋๋ค.
๋งค๊ฐ๋ณ์๊ฐ ๋ง์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ํ๋ํ๋๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ค๋ฃจ๊ธฐ๋ณด๋ค๋, ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ธ์คํด์ค ๋ณ์๋ก ๊ฐ์ง๋ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ ์ด๋ฅผ ํ์ฉํ๋ ๋ฐฉ์์ผ๋ก ์ค๊ณํ์ฌ ์์ง๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค.
4. ๋ฉ์๋ ์ฒด์ด๋
๋ฌผ๋ก ์์ ๊ฐ์ด ์์ฑํ๋ ์ผ์ ๊ฑฐ์ ์๊ฒ ์ง๋ง, getter ๋ฑ์ ํตํด ๋ฉ์๋ ์ฒด์ด๋์ผ๋ก ํด๋์ค ๋ด๋ถ์ ๊น์ ์์์ ์ ๊ทผํ๋ ์ฝ๋๋ ์๊ฐ๋ณด๋ค ์์ฃผ ๋ณผ ์ ์๋ ํจํด์ ์ฝ๋์ ๋๋ค.
ํ์ง๋ง ์์ ๊ฐ์ ์ฝ๋๋ ์์ง๋๋ฅผ ๋ฎ์ถ ์ ์์ด ๊ถ์ฅํ์ง ์๋ ๋ฐฉ๋ฒ์ธ๋ฐ์, armor์ ํ ๋นํ๋ ์ฝ๋๋ฅผ ์ ๋ฉ์๋๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ๊ณณ์์๋ ์ค๋ณต์ผ๋ก ์์ฑ๋ ๊ฐ๋ฅ์ฑ์ด ์กด์ฌํ๊ณ , ์ด๋ ์๊ตฌ ์ฌํญ์ด ๋ณ๊ฒฝ๋๋ฉด ํด๋น ์์์ ์ ๊ทผํ๊ณ ์๋ ๋ชจ๋ ์ฝ๋๋ฅผ ํ์ธํ๊ณ ์์ ํด์ผ ํ๋ ๋ฌธ์ ์ ์ด ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด์ ๊ด๋ จํ์ฌ ๋๋ฏธํฐ์ ๋ฒ์น์ด๋ผ๋ ๊ฐ๋ ์ด ์กด์ฌํฉ๋๋ค. (์ฌ์ฉํ๋ ๊ฐ์ฒด ๋ด๋ถ๋ฅผ ์์์๋ ์๋๋ค๋ ๋ฒ์น, ์ฐธ๊ณ )
๊ฐ์ฒด ์งํฅ ์ค๊ณ์์ ์ฌ์ฉ๋๋ '๋ฌป์ง ๋ง๊ณ , ๋ช ๋ นํ๊ธฐ(Tell, Don't Ask)' ๋ผ๋ ๋ฐฉ๋ฒ์ด ์กด์ฌํฉ๋๋ค.
์์ฒ๋ผ ์์ธํ ๋ก์ง์ ํธ์ถํ๋ ์ชฝ์ด ์๋, ํธ์ถ๋๋ ์ชฝ์์ ๊ตฌํํฉ๋๋ค.
์ฐธ๊ณ ์๋ฃ
'Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Modern Java: An In-Depth Guide from Java 8 to Java 21 (3) | 2024.09.08 |
---|---|
Java ํด๋์ค ์ค๊ณ ์์ ํ๊ฒ ์ ํ๊ธฐ (1) | 2023.12.16 |
Java Map - compute(), computeIfAbsent(), computeIfPresent() (0) | 2023.03.13 |
EasyRandom - Java beans๋ฅผ ๋๋ค์ผ๋ก ์์ฑํด ์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (0) | 2023.01.27 |
[Java DeepDive] - Map(HashMap) 1. ๊ฐ๋ , ํ๋, ์์ฑ์ (2) | 2022.11.27 |
๋๊ธ