10์ฅ์์๋ ๊ฐ์ฒด์งํฅ์ ๋ํ์ ์ธ ์ฌ์ฌ์ฉ ๊ธฐ๋ฒ์ธ ์์์ ๊ดํด ์ค๋ช ํ๋ฉฐ ์ฝ๋์ ์ฌ์ฌ์ฉ์ ์ํด ์์์ ์ฌ์ฉํ์ง ๋ง๋ผ๊ณ ์กฐ์ธํ๋ค. ๋์ 11์ฅ์ ์ค๋ช ํ ํฉ์ฑ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
๊ฐ๋ฐ์๋ DRY(Don't Repeat Yourself) ์์น์ ๋ฐ๋ผ ์ฝ๋ ์์ ์ค๋ณต์ด ๋ฐ์ํ์ง ์๋๋ก ํด์ผ ํ๋ค.
๋ ํด๋์ค ์ฌ์ด์ ์ค๋ณต ์ฝ๋๋ฅผ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์?
1. ํด๋์ค๋ฅผ ํ๋๋ก ํฉ์น๊ณ ํ์ ์ฝ๋๋ฅผ ์ถ๊ฐํ ๋ค ๋ก์ง์ ํ์ ์ฝ๋์ ๋ฐ๋ผ ๋ถ๊ธฐํ๋ ๊ฒ์ด๋ค.
-> ๋จ, ์ด ๋ฐฉ๋ฒ์ ๊ฒฝ์ฐ ํ์ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ํด๋์ค๋ ๋ฎ์ ์์ง๋์ ๋์ ๊ฒฐํฉ๋ ๋ฌธ์ ์ ์๋ฌ๋ฆฌ๊ฒ ๋จ
2. ๋๋ฒ์งธ ๋ฐฉ๋ฒ์ ํ์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ค๋ณต ์ฝ๋๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ์์์ด๋ค.
์์์ด๋?
- ํด๋์ค๋ฅผ ์ฌ์ฌ์ฉํ๊ธฐ ์ํด ์๋ก์ด ํด๋์ค๋ฅผ ์ถ๊ฐํ๋ ๊ฐ์ฅ ๋ํ์ ์ธ ๋ฐฉ๋ฒ
- ํด๋์ค ์์ ์ ์๋ ์ธ์คํด์ค ๋ณ์์ ๋ฉ์๋๋ฅผ ์๋์ผ๋ก ์๋ก์ด ํด๋์ค์ ์ถ๊ฐํ๋ ๊ตฌํ ๊ธฐ๋ฒ
์ฌ์ฌ์ฉ์ ๊ด์ ์์ ์์์ ๋จ์ ์?
- ๋ถ๋ชจ ํด๋์ค์ ์์ ํด๋์ค์ ๊ฐํ ๊ฒฐํฉ๋ (์์ ํด๋์ค๊ฐ ๋ถ๋ชจ ํด๋์ค์ ๊ตฌํ ๋ฐฉ๋ฒ์ ๋ํด ์ ํํ ์๊ณ ์์ด์ผ ํจ)
- ์ทจ์ฝํ ๊ธฐ๋ฐ ํด๋์ค ๋ฌธ์ (Fragile Base Class Problem, Brittle Base Class Problem), ๋ถ๋ชจ ํด๋์ค์ ๋ณ๊ฒฝ์ ์ํด ์์ ํด๋์ค๊ฐ ์ํฅ์ ๋ฐ๋ ํ์
์์์ ์ํ ๊ฒฝ๊ณ
1. ์์ ํด๋์ค์ ๋ฉ์๋ ์์์ super ์ฐธ์กฐ๋ฅผ ์ด์ฉํด ๋ถ๋ชจ ํด๋์ค์ ๋ฉ์๋๋ฅผ ์ง์ ํธ์ถํ ๊ฒฝ์ฐ ๋ ํด๋์ค๋ ๊ฐํ๊ฒ ๊ฒฐํฉ๋๋ค. super ํธ์ถ์ ์ ๊ฑฐํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ฐพ์ ๊ฒฐํฉ๋๋ฅผ ์ ๊ฑฐํ๋ผ
2. ์์๋ฐ์ ๋ถ๋ชจ ํด๋์ค์ ๋ฉ์๋๊ฐ ์์ ํด๋์ค์ ๋ด๋ถ ๊ตฌ์กฐ์ ๋ํ ๊ท์น์ ๊นจํธ๋ฆด ์ ์๋ค.
3. ์์ ํด๋์ค๊ฐ ๋ถ๋ชจ ํด๋์ค์ ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉ ํ๋ ๊ฒฝ์ฐ ๋ถ๋ชจ ํด๋์ค๊ฐ ์์ ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์ ํด๋์ค๊ฐ ๊ฒฐํฉ๋ ์ ์๋ค.
4. ํด๋์ค๋ฅผ ์์ํ๋ฉด ๊ฒฐํฉ๋๋ก ์ธํด ์์ ํด๋์ค์ ๋ถ๋ชจ ํด๋์ค์ ๊ตฌํ์ ์์ํ ๋ณ๊ฒฝํ์ง ์๊ฑฐ๋, ์์ ํด๋์ค์ ๋ถ๋ชจ ํด๋์ค๋ฅผ ๋์์ ๋ณ๊ฒฝํ๊ฑฐ๋ ๋ ์ค ํ๋๋ฅผ ์ ํํ ์๋ฐ์ ์๋ค.
๊ทธ๋ผ ๋ ์ข์ ๋ฐฉ๋ฒ์ ์์๊น?
ํฉ์ฑ์ด ์์ง๋ง.... ์์์ ์จ์ผํ๋ค๋ฉด, ์์์ผ๋ก ์ธํ ํผํด๋ฅผ ์ต์ํํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค.
๋ฐ๋ก ์ถ์ํ๋ค. ์ถ์ํ๋ฅผ ์ฐพ์๋ด๊ณ ์์ ๊ณ์ธต ์์ ํด๋์ค๋ค์ด ๊ทธ ์ถ์ํ์ ์์กดํ๋๋ก ํด์ผ ํ๋ค.
๊ทธ๋ผ ์ด๋ป๊ฒ ์ถ์ํ๋ฅผ ํด์ผ ํ ๊น?
1. ์ฐจ์ด๋ฅผ ๋ฉ์๋๋ก ํธ์ถํ๋ผ
- ์ค๋ณต ์ฝ๋ ์์์ ์ฐจ์ด์ ์ ๋ณ๋์ ๋ฉ์๋๋ก ์ถ์ถํ๋ค.
2. ์ค๋ณต ์ฝ๋๋ฅผ ๋ถ๋ชจ ํด๋์ค๋ก ์ฌ๋ ค๋ผ
- ๋ถ๋ชจํด๋์ค๋ ์ถ์ํด๋์ค๋ก ๋ง๋ ๋ค. ๊ณตํต ๋ฉ์๋ ๋ถ๋ถ์ ๋จผ์ ๋ถ๋ชจํด๋์ค๋ก ์ด๋์ํค๊ณ ์ปดํ์ผ ์๋ฌ๋ฅผ ํตํด ํ์ํ ์ธ์คํด์ค ๋ณ์๋ ๊ฐ์ด ์ด๋์ํจ๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๊ฐ ํด๋์ค๋ ์๋ก ๋ค๋ฅธ ๋ณ๊ฒฝ์ ์ด์ ๋ฅผ ๊ฐ์ง ์ ์๊ณ , ์ฆ ๋จ์ผ ์ฑ ์ ์์น์ ์ค์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์์ง๋๊ฐ ๋๋ค.
// TODO
์๋ฐ generic ๊ณต๋ถํ๊ธฐ
์๋ฐ Duration
java.time.Duration
java.time.LocalDateTime
.between ๋ฉ์๋
'์คํฐ๋ > ์ค๋ธ์ ํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ค๋ธ์ ํธ] 12์ฅ '๋คํ์ฑ' (0) | 2022.12.30 |
---|---|
[์ค๋ธ์ ํธ] 11์ฅ 'ํฉ์ฑ๊ณผ ์ ์ฐํ ์ค๊ณ' (0) | 2022.12.23 |
[์ค๋ธ์ ํธ] 9์ฅ '์ ์ฐํ ์ค๊ณ' (0) | 2022.12.09 |
[์ค๋ธ์ ํธ] 8์ฅ '์์กด์ฑ ๊ด๋ฆฌํ๊ธฐ' (0) | 2022.12.02 |
[์ค๋ธ์ ํธ] 7์ฅ '๊ฐ์ฒด ๋ถํด' (0) | 2022.11.25 |
๋๊ธ