0. ์์ํ๊ธฐ ์์
A) ์ฃผ์ฐจ๋ณ ํ์ด๋ชฉํ
์ด๋ฒ ์ฃผ์ฐจ๋ ์ ๋ฒ์ฃผ์ฐจ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฌธ์ ์์ ์๊ตฌํ๋ ๋ฐ๊ฐ ์ ๋ค๊ณ ๋๊ผ์ต๋๋ค.
๋ํ ์ํ๊ธฐ๊ฐ์ด ๊ฒน์ฒ ์ฌ์ฉํ ์ ์๋ ์๊ฐ์ด ๋ง์ด ์์๊ณ , ์ด์ ๋ฐ๋ผ ์ ๋ฒ์ฃผ์ฐจ์์ ์์ฌ์ ๋ '๊ฐ์ฒด ๊ด์ ์์์ ๋ฌธ์ ํ์ด'๋ฅผ ํด๊ฒฐํ๋ ์ฐ์ต์ ํด๋ณด์๋ ๋ชฉํ๋ฅผ ์ธ์ ์ต๋๋ค.
์ด์ ํจ๊ป ํ ์คํธ์ผ์ด์ค์ '๋จ์ํ ์คํธ'๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๊ธฐ๋ก ํ์ต๋๋ค.
1. ๋ฌธ์ ๋ฅผ ๊ฐ์ฒด์งํฅ์ ๊ด์ ์์ ๋ถ์ํ์ฌ ํ์ดํ๊ธฐ
2. ๋จ์ํ ์คํธ ์ ์ฉํ๊ธฐ
1. ํ๋ก์ ํธ ์ ๋ฆฌ
๐ ๋ฌธ์ ๋ถ์
๋ฌธ์ ์์๋ ์ ๋ฒ์ฃผ์ฐจ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ณต์กํ ์๊ตฌ์ฌํญ์ ์์ฒญํ์ง ์์์ต๋๋ค.
๋ค๋ง ๋ฌธ์ ํ์ด ์กฐ๊ฑด ์์์ depth ์ ํ์ด ์ถ๊ฐ๋ ์ ์ด ์์๋๋ฐ, ๊ด๋ จ ๋ด์ฉ์ ๋ฌธ์ ๋ฅผ ํ์ดํจ์ ์์ด ์ ์ฉํ๋ ์ฌํญ์ผ๋ก ํ๋จ, ์๊ตฌ์ฌํญ ๋ถ์์ ๋ฐ์ํ์ง๋ ์์์ต๋๋ค.
๐ช ๋ฌธ์ ์ ๊ทผ & ํ์ด
์ด๋ฐ์ ๋ฌธ์ ํ์ด๋ฅผ ์ํด ์ ๊ทผํ ์ฝ๋๋ 1์ฃผ์ฐจ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ์ฐจ์งํฅ์ ๊ด์ ์์ ์ค๊ณ๋ ์ฝ๋๋ค์ ์ฐ์์ด์์ต๋๋ค.
์ด๋ก ์ธํด ์ฝ๋๋ค ๋ด์ ์ํธ ๊ฐ ๊ฐ์ฒด์ ์๋ฏธ๊ฐ ํด์๋๊ณ , ์ฝ๋์ ์ฌํ์ฉ์ด ์ด๋ ค์์ง๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์์ต๋๋ค.
์ ๋ ์ด๊ธฐ์ ์ค์ ํ๋ ๋ณธ ์ฃผ์ฐจ์ ๋ชฉํ๋ฅผ ๋ค์ ์๊ฐํด๋ณด๊ณ ๋ชฉํ์ ๋์ ํ๊ธฐ ์ํด ์๋์ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์น๋ฉฐ ์ฝ๋ ๋ฆฌํฉํ ๋ง์ ์งํํ์์ต๋๋ค.
๊ฐ์ฒด์งํฅ์ ๊ด์ ์์์ ๋ฌธ์ ํด๊ฒฐ์ฐ์ต
์ด๋ฒ์ฃผ์ฐจ์ ๋ชฉ์ ๋ฌ์ฑ์ ์ํด, ์ ๋ ๋ฌธ์ ์์์ ์ฃผ์ ๊ด์ฌ์ฌ๋ฅผ ํ์ธํ์ฌ ์ด๋ฅผ '๊ฐ์ฒด'๋ก์์ ํํ์ผ๋ก ๋ํ๋ด๋ ๊ณผ์ ์ ๊ฑฐ์ณค์ต๋๋ค.
์ด๋ฒ์ฃผ์ฐจ ๊ณผ์ ์ ๊ฒฝ์ฐ, ๊ฐ ์๋์ฐจ ๊ฐ ๊ฒฝ์ฃผ๋ฅผ ์งํํ์ฌ '์งํ์ํ'์ '์ฐ์น์'์ ๋ํ ์ ๋ณด๋ฅผ ์์๋ด๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
์ด ๋๊ฐ์ ์ ๋ณด๋ฅผ ์ ๋ ๋ฌธ์ ์ ์ฃผ์ ๊ด์ฌ์ฌ๋ก ํ๋จํ๊ณ , ์ด๋ค์ ๋ด์ ์ ์๋ ๊ฐ์ฒด๋ฅผ '๊ฒฝ๊ธฐ'๋ผ๊ณ ๋ช ๋ช ํ ์ ์์ ๊ฒ์ด๋ผ ํ๋จํ์์ต๋๋ค.
๋ฐ๋ผ์ '๊ฒฝ๊ธฐ' ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์งํ์ํ์ ์ฐ์น์์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋๋ก ๊ฐ์ฒด๋ฅผ ์ค๊ณํ์์ต๋๋ค.
Q. Race ๊ฐ์ฒด๊ฐ service ํจํค์ง์ ์๋๋ฐ, ์ด์ ๋?
์์์ ์ธ๊ธํ ๋ฐ์ ๊ฐ์ด, ๊ธฐ์กด ์ ์ฐจ์งํฅ์ ํ์ด๋ก ์ธํด ์ฐ์ฌ๋์ด์๋ ์ฝ๋๋ฅผ Race๋ผ๋ ๊ฐ์ฒด๋ฅผ ์ค์ฌ์ผ๋ก ํ ๋ฆฌํฉํ ๋ง ๊ณผ์ ์ด ์งํ๋์์ต๋๋ค.
์ด ๊ณผ์ ์์ ๋ค์์ ๋น์ฆ๋์ค ๋ก์ง์ด Race ๋ด๋ก ํฌํจ๋๊ฒ ๋์๊ณ , ์ด๋ก ์ธํด Race ๋ด์ ๋ฉ์๋ ์ค์๋ ์์น ๋ฐ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์์ต๋๋ค.
๊ฐ๋ฐ๋น์, ์ ๋ ๋ก์ง ์์์ ๋ณธ ๊ฐ์ฒด๋ฅผ domain์ผ๋ก ๋ถ๋ฆฌํ๊ธฐ ์ํด์๋ ๊ฐ์ฒด์งํฅ์ ๊ด์ ์์ ์๋ฒฝํ ํน์ ๋์์ 'ํํ'ํ ๊ฐ์ฒด๋ฅผ ๋ด์์ผ ํ๋ค๋ ์ํคํ ์ฒ ์ค๊ณ๊ท์น์ ์ค์ /์ ์ฉํ์์ต๋๋ค.
Race ๊ฐ์ฒด๊ฐ ๊ฒฝ์ฃผ๋ฅผ 'ํํ'ํ๋ ์ฑ๊ฒฉ๋ณด๋ค๋ ํ๋ก๊ทธ๋จ ์ ๋ฐ์ ์ผ๋ก ํ๋ฆ์ '์ ์ด'ํ๋ค๋ ๋๋์ ๊ฐํ๊ฒ ๋ฐ์๊ณ , ๋ฐ๋ผ์ ์ด๋ฅผ 'service'์ 'controller' ์ค ํ๋๋ก ๋ณด๊ธฐ๋ก ํ์์ต๋๋ค.
์ด ๋์ค ๊ฐ์ฒด ๋ฐ ๋ฉ์๋์ ๋ช ๋ช ์ฑ๊ฒฉ ์ 'service'์ ๊ฐ๊น๋ค๊ณ ํ๋จ, service ๊ฐ์ฒด๋ก ๋ถ๋ฅํ์์ต๋๋ค.
๋ง์ฝ ์๊ฐ์ ์ฌ์ ์ ์ฝ๋๋ฅผ ๊ณ ๋ฏผํด๋ณผ ์ ์๋ ๊ธฐํ๊ฐ ๋ ์์๋๋ผ๋ฉด
Race ๊ฐ์ฒด์ ์ ๋ฐ์ ํ๋ฆ์ 'controller'๋ก,
์ฃผ์ ์ ์ด๋ก์ง์ ๋ธ๋กํํ์ฌ 'service'๋ก,
๊ฒฝ์ฃผ์ ๋ํด ํํ๋ ๋ก์ง์ 'domain'์ 'Race' ๊ฐ์ฒด๋ก ๋ถ๋ฆฌํ๋ ์๋๋ฅผ ํ์ ๊ฒ ๊ฐ์ต๋๋ค.
๐๏ธ ๋ฌธ์ ๊ตฌํ
ํ๋ก์ ํธ ์ํคํ ์ฒ
์ง์ ์ฃผ์ฐจ๋ณด๋ค ์๊ตฌ์ฌํญ์ด ๋ง๊ณ ๊ตฌํ์ ๊ด์ ์์ ๋ก์งํ๋ฆ์ ๊ด๋ฆฌํ๋ ๋ณ๋ ๊ด๋ฆฌ๊ฐ์ฒด์ ํ์์ฑ์ ๋๊ปด
MVCํจํด์ ์กฐ๊ธ ๋ ๊ฐ๊น์ด ์ํคํ ์ฒ๋ฅผ ์ฐจ์ฉํ์ต๋๋ค.
- racingcar.constant: ํ๋ก์ ํธ ๋ด์์ ์ฌ์ฉ๋๋ ์์์ ์๋ฌ๋ฉ์ธ์ง๋ฅผ ๊ด๋ฆฌํ๋ Class ํจํค์ง
- racingcar.domain: ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ๋ฌธ์ ๋ฅผ ๋ํ๋ด๋ ์ฃผ์๋์์ด ํํ๋๋ ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ๋ Class ํจํค์ง
- racingcar.dto: ๊ฐ ํจํค์ง ๊ฐ ๋ฐ์ดํฐ ์ด๋์ ์ํด ์ฌ์ฉ๋๋ Class ํจํค์ง
- racingcar.io: ์ฝ์์ ํตํ ์ ์ถ๋ ฅ ์ ์ด๋ฅผ ์ ๋ดํ๋ Class ํจํค์ง
- racingcar.service: ํ๋ก์ ํธ ๋ก์ง์ ์ ๋ฐ์ ์ธ ํ๋ฆ์ ๋ด๋นํ๋ Class ํจํค์ง
- racingcar.validation: ์ ์ถ๋ ฅ ๋ฐ ๋ฉ์๋ ๋ด ๋ก์ง์ฒ๋ฆฌ ๊ฐ ํ์ํ ํ์ ์ค์์ฌ๋ถ๋ฅผ ํ์ธํ๋ Class ํจํค์ง
๋ฌธ์ ํด๊ฒฐ๋ฐฉ์
๋ฌธ์ ์ ์๊ตฌ์ฌํญ์ racingcar.service์์ racingcar.io๋ก๋ถํฐ ์ฐจ๋ ์ด๋ฆ๋ชฉ๋ก์ DTO ๊ฐ์ฒด๋ฅผ ํตํด ์ ๋ฌ๋ฐ์ Car ๊ฐ์ฒด๋ฅผ ์์ฑ ํ,
Car ๊ฐ์ฒด ๋ด์ ๊ตฌํ๋ run() ๋ฉ์๋๋ฅผ ํตํด ๋๋คํ๊ฒ ์์ง์ธ ํ ๊ทธ ์์ง์ธ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ์ต๋๋ค.
์ด์ ๋ํด ์ด๋ฒ ์ฃผ์ฐจ๋ถํฐ ํ ์คํธ์ผ์ด์ค๋ฅผ ์ค๊ณ/์ ์ฉํ๋ ๊ณผ์ ์ ์ถ๊ฐํ์์ต๋๋ค.
Validation๊ณผ io์ฒ๋ฆฌ์ ๋ํ ํ ์คํธ๋ฅผ ์งํํ๊ณ ์ ํ์์ผ๋, ์๊ฐ๋ถ์กฑ์ผ๋ก ์ธํด Validation ํ ์คํธ๋ ์ฒ๋ฆฌํ์ง ๋ชปํ์ต๋๋ค.
๊ตฌํ์ฝ๋๋ ์ฌ๊ธฐ์์ ํ์ธํ์ค ์ ์์ต๋๋ค.
Q. ๋๋คํ๋จ์ Car๊ฐ์ฒด ์์ผ๋ก ๋ฃ์ด๋ฒ๋ ธ๋๋ฐ, ๊ทธ ์ด์ ๋? ํ ์คํธ๊ฐ ํ๋ค์ด์ง์ง ์๋?
์ฒ์ Car ๊ฐ์ฒด๋ฅผ ์ค๊ณํ๋ฉฐ ๊ณ ๋ฏผํ๋ ํญ๋ชฉ ์ค ํ๋๋ '์บก์ํ'์ ๋๋ค.
๊ฐ์ฒด์งํฅ์ค๊ณ์ ํน์ง๋ค ์ค ํ๋์ธ ์ด ํน์ฑ์ ๊ณ ๋ คํ๊ธฐ ์ํด, run() ๋ฉ์๋๋ฅผ ์ค๊ณํ๋ ๊ณผ์ ์์ ๋๋คํ๋จ๋ก์ง์ ๋ถ๋ฆฌ์ฌ๋ถ๋ฅผ ๊ณ ๋ฏผํ์ต๋๋ค.
์ค๊ณ๋น์ ์ ๋ ๋๋ค์ ๋ํ ํ๋จ์ฌ๋ถ๊ฐ ์ธ๋ถ์์ ๊ฒฐ์ ๋ ์ ์๋๋ก ํ๋ค๋ฉด ์ธ๋ถ์ ์ํฅ์ ํตํด ๊ฐ์ด ์กฐ์๋ ์ ์์์ ์ฐ๋ คํ์ต๋๋ค.
Car ๊ฐ์ฒด๋ฅผ ๊ตฌํํจ์ ์์ด, ์ ๋ ์๋์ฐจ๋ฅผ '์ค์ค๋ก ์์ง์ด๋ ๋์'์ผ๋ก ๋ณด์๊ณ , ์ด์ ๋ฐ๋ผ ์ธ๋ถ์์ธ์ผ๋ก ์ธํด ์ด ํ๋จ์ฌ๋ถ๊ฐ ๊ฒฐ์ ๋์ด์๋ ์๋๋ค๊ณ ํ๋จํ์์ผ๋ฉฐ, ์ด์ ๋ฐ๋ผ ํ๋จ์ฌ๋ถ๋ฅผ ๋ณดํธํ๊ธฐ ์ํด run() ๋ฉ์๋ ์์ ํ๋จ๋ก์ง์ ํฌํจ์์ผ ์ธ๋ถ์ฃผ์ ์ ๋ง์์ต๋๋ค.
ํ์ ํ๊ฒ ์ง๋ง, ์ดํ ์ด ํ๋จ์ด ์๋ชป๋ ํ๋จ์ด์์์ ์๊ฐํ์์ต๋๋ค (ํ๊ณ ์์ ์์ธํ ๋ค๋ฃจ๊ฒ ์ต๋๋ค.)
2. ํ๋ก์ ํธ ํ๊ณ
๐๐ป ๊ตฌํ์ฝ๋์ ์ดํด๋์ด๋
1์ฃผ์ฐจ์์ ์์ฌ์ ๋ ๊ฐ์ฒด์งํฅ์ ์ค๊ณ์ ์์ฌ์์ ์์ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์น๋ฉฐ ๊ทน๋ณตํ์์ผ๋ฉฐ,
์ฃผ์ด์ง ์ฝ๋ ๋ฐ ์๊ตฌ์ฌํญ ๋ช ์ธ๋ฅผ ๋ช ํํ๊ฒ ํ์ธํ๋ ๊ณผ์ ์ ํตํด ๋น ๋ฅด๊ณ ์ ํํ ์ฝ๋๋ฅผ ์์ฑํด๋ผ ์ ์์์ต๋๋ค.
์ด๋ ๊ตฌํ๋๋ ์ฝ๋์์ ์กด์ฌํ ์ ์๋ ์ค๋ณต๋๋ ๋ณด์ผ๋ฌ ํ๋ ์ดํธ ์ฝ๋๋ฅผ ์ต์ํํด์ฃผ์์ผ๋ฉฐ,
์ด๋ฅผ ํตํด ์์ ๊ธฐ๋ฅ๋จ์๋ก ๋ถ๋ฆฌ๋ ๋ฉ์๋ ์ค๊ณ๋ฅผ ๋ง๋ค์ด๋ด๋ ๊ฒ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค.
์ด์ ํจ๊ป ๋ฌธ์ ์์ ์๊ตฌํ๋ ๋ช ์ธ์ฌํญ์ด ๋ง์ง ์์๊ธฐ ๋๋ฌธ์ ์ฝ๋์ ๊ธธ์ด๊ฐ ๋น๊ต์ ๊ธธ์ง ์์๊ณ , ์ด์ ๋ฐ๋ผ ๊ตฌํ ์ฝ๋์ ์ดํด๊ฐ ์ฝ๊ฒ ๊ฐ๋ฅํ์ต๋๋ค.
๐ ์์ฌ์ ๋ ์
A) ์ค๋ ํฌ์ํ์ง ๋ชปํ ์๊ฐ
1์ฃผ์ฐจ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ค๊ฐ๊ณ ์ฌ ์ํ๊ธฐ๊ฐ๊ณผ ๊ฒน์น๋ ๋ฌธ์ ๋ก ์ธํด ๊ฑฐ์ ํ๋ฃจ์ ๋๋ง ์จ์ ํ ๋ชฐ์ ํ ์ ์์์ต๋๋ค.
์ด๋ฏธ ํ๋ฆฌ์ฝ์ค ์์ ์ ๋ถํฐ ์์ํ๋ ๋ฌธ์ ์์ง๋ง, ์๊ฐํ๋ ์๊ฐ์ด ๊ธธ์ด์ง ์๋ก ๊ฒฐ๊ณผ๋ฌผ์ ์์ฑ๋๊ฐ ๋์์ง์ ์๊ณ ์๊ธฐ์ ๊ทธ ์์ฌ์์ด ๋ ์ปธ์ต๋๋ค.
๊ฐ๋ฅํ ์ต๋์ ์๊ฐ์ ์จ์ ํ ํ ์ ํ๋ ๊ฒฝํ์ ์ด๋ฒ ํ๋ฆฌ์ฝ์ค ๊ธฐ๊ฐ ์ค ์ผ๊ณ ์ ํ๋ ๋ชฉํ๋ก ์ค์ ํ์ฌ 4์ฃผ ์ค ๋จ์ ์ฃผ์ฐจ๋ง์ด๋ผ๋ ๋ชฐ์ ํ๋ ๊ฒฝํ์ ํ ์ ์๋๋ก ๋ ธ๋ ฅํด์ผํ ๊ฒ ๊ฐ์ต๋๋ค.
B) ๋ฉ์๋/๋ณ์๋ช ์ ๋ถ๋ช ํ์ฑ
์ด๋ฒ์ฃผ์ฐจ๋ถํฐ๋ ํจ๊ป 7๊ธฐ ํ ํฌ์ฝ์ค๋ฅผ ์ค๋นํ๋ ์์ฃผ๋ํ๊ต ํ์ฐ๋ค๊ณผ ํจ๊ป ์คํฐ๋๋ฅผ ๊ตฌ์ฑํ์ฌ ์๋ก์ ์ฝ๋๋ฅผ ๋ฆฌ๋ทฐํ๋ ์๊ฐ์ ๊ฐ์ก์ต๋๋ค.
์ฝ๋๋ฆฌ๋ทฐ ๊ณผ์ ์์, ๊ฐ ๋ฉ์๋์ ๋ณ์์ ์ด๋ฆ์ด ํ๋ฒ์ ์ดํดํ ์ ์๋๋ก ์๋ฟ์ง ์๋๋ค๋ ๊ฒ์ ์๊ฒ๋์๊ณ , ์ด๋ฅผ ํตํด ์ด๋ฆ์ ์ ์ ์ ์คํ์ง ๋ชปํ๋ ๊ณผ๊ฑฐ์ ๋ชจ์ต์ ์์ฌ์์ ๋๊ผ์ต๋๋ค.
C) ์ง์ผ์ง์ง ๋ชปํ ์ฝ๋ฉ ์ปจ๋ฒค์
1์ฃผ์ฐจ ๋ฆฌ๋ทฐ์์ ์ธ๊ธ๋ ์ฝ๋ฉ ์ปจ๋ฒค์ ๊ณผ ๊ด๋ จ๋ ๋ฆฌ๋ทฐ์ฌํญ์ ์ด๋ฒ ์ฃผ์ฐจ์์ ์์ฑํ ์ฝ๋์์ ์จ์ ํ ํํํด๋ด์ง ๋ชปํ์ต๋๋ค.
FE๊ฐ๋ฐ์ ํ๋ ๊ณผ๊ฑฐ ์ต๊ด๋ค์ด BE๊ฐ๋ฐ๊น์ง ๊ทธ๋๋ก ์ด์ด์ง๋ฉฐ ์ฝ๋์ ๋ฌป์ด๋ฌ๊ณ ,
์คํฐ๋๋ฅผ ์งํํ๋ ๊ณผ์ ์์ ์ด๋ฐ ๋ฌธ์ ์ ์ ์ง์ ์ ์ผ๋ก ์ธ์ํ ์ ์์์ต๋๋ค.
1์ฃผ์ฐจ ๋ฆฌ๋ทฐ๋ฅผ ๋ค์ ํ๋ฒ ์ฝ์ด๋ณด๋ฉฐ ์ต๊ดํ ํด์ผํ ๊ฒ ๊ฐ์ต๋๋ค.
D) ๊ตฌํ์ฒด์ ๋ํ ์ดํด๋ถ์กฑ
HashMap์ key-value ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋๋ก ํด์ฃผ๋ java.util ๋ด Map ๊ตฌํ์ฒด๋ก, ์ ๋ ฅ๋ ๊ฐ๋ค์ ๋ํ ์ ๋ ฅ์์๋ฅผ ๋ณด์ฅํ์ง ์๊ณ ๋ฐ์ดํฐ๋ฅผ ํจ๊ป ์ ๊ณต๋ key๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์ฅํฉ๋๋ค.
์ด์ ๋ํด ์ฐํ ์ฝ ์์ ์ ์ฝ 1๋ฌ๊ฐ ๊ณต๋ถํ์ผ๋, ๋ง์ ์ฌ์ฉํ ๋ ๊ณต๋ถํ๋ ๋ด์ฉ์ ์ฌ์ฉํ๊ฒฝ์ ๋ฐ๋ผ ๋ช ํํ ํ๋จํ์ง ๋ชปํ๊ณ ์ ์ฉํ์ต๋๋ค.
ํนํ Race ๊ฐ์ฒด์์ participant๋ฅผ ์ ์ฅํ ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ๋ฐ์ HashMap์ ์ ์ฅํ๋๋ฐ, ์ด๋ก ์ธํด ๋ง์ฝ key์ ascii์ฝ๋๊ฐ ๋ ์์๊ฐ์ด ๋์ค์ ์ ๋ ฅ๋๋ ๊ฒฝ์ฐ ๋จผ์ ์ถ๋ ฅ๋๋ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๊ฒ ๋์์ต๋๋ค.
์ด ๋ฌธ์ ๋ ์คํฐ๋์์ ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ํ๋ ๊ณผ์ ์์ ์๊ฒ ๋์๋๋ฐ,
์ด๋ฅผ ํตํด ํ ์คํธ์ฝ๋์ ์ค์์ฑ ๋ฐ ํ์์ฑ๊ณผ ์คํฐ๋๋ฅผ ํตํด ์ป์ ์ ์๋ ๋ค์ํ ์ฅ์ ๋ค์ ํ์์ฑ์ ๋ํด ์ ์ ์์์ต๋๋ค.
๐ค ์ค๋ซ๋์ ๊ณ ๋ฏผํ๋ ๋ถ๋ถ
์๋ฌด๋๋ ์ด๋ฒ์ฃผ์ฐจ์ ์ฃผ์๋ชฉํ๋ก ์ค์ ํ๋ '์ฝ๋์ ๊ฐ์ฒด์งํฅ์ ์ค๊ณ'์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ฅผ ์ํด ๋ฌธ์ ๋ฅผ ๋ถ์ํ๋ ๊ณผ์ ์์๋ถํฐ '๊ฐ์ฒด์งํฅ'์ด๋ผ๋ ๊ฐ๋ ์ ๊ณ ๋ คํ๋ฉฐ ๋ฌธ์ ๋ฅผ ๋ณด๋ ๊ธฐํ๊ฐ ๋์๊ณ , ์ด๋ฅผ ํตํด ์ ๋ง์ ๊ฐ์ฒด์งํฅ์ ์ฝ๋์ค๊ณ ๋ฐฉ๋ฒ์ ์๋ฆฝํ๊ฒ ๋๋ ๊ณ๊ธฐ๊ฐ ๋์์ต๋๋ค. ๊ด๋ จ๋ ๊ธ์ ๋ณ๋ ํฌ์คํ ์ ํตํด ์ ๋ฆฌํ๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ก ์๋กญ๊ฒ ๋ฐฐ์ด ์
A) ๊ฐ์ฒด์งํฅ์ ์ค๊ณ์ ์ค์์ฑ
๊ฐ์ฒด์งํฅ์ ์ธ ์ค๊ณ๋ฅผ ํตํด ๋๋ฉ์ธ๊ณผ ๋น์ฆ๋์ค๋ก์ง์ ๋ถ๋ฆฌํด ์ค๊ณํ๋ ์ฐ์ต์ ํ ์ ์์์ต๋๋ค. domain์ ์ค์ฌ์ผ๋ก ํํ๋๋ ๊ธฐ๋ฅ๋ค๊ณผ ์ด๋ฅผ ๊ฐ๋ฐ๋ช ์ธ์ ๋ง์ถฐ ์คํํ๋ ๋น์ฆ๋์ค ๋ก์ง๋ค์ ํ์์ฑ์ ๋ํ ๋ถ๋ฆฌ๊ด๋ฆฌ์ ํ์์ฑ์ ๋๋ ์ ์์์ผ๋ฉฐ, ์ ์ ๋ฆฌ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฐ์ฅ ์ฌ์ด๋ฐฉ๋ฒ์ด๋ผ๋ ๊ฒ์ ๋ฐฐ์ ์ต๋๋ค.
B) ์๋ช ์ ์ค์์ฑ
์๋ช ๋ํ ์ฝ๋๋ฅผ ์ฝ๊ฒ ์ฝ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ๋ ์ ์๋ค๋ ๊ฒ์ ์ ์ ์์์ต๋๋ค.
์คํฐ๋์์ ์งํํ๋ ์ฝ๋๋ฆฌ๋ทฐ ๊ณผ์ ์ ์ ๊ฒ ๋ฉ์๋๋ช ์ ํตํด ํด๋น ๋ฉ์๋๊ฐ ์ฒ๋ฆฌํ๋ ์ผ์ ๋ํ๋์ผ๋ก์ JavaDoc์ ์์ฑํ์์ฑ์ ์ค์ด๊ณ , ๋ณ์๋ช /์์๋ช ์ ํตํด ํด๋น ๊ฐ์ด ๋ํ๋ด๋ ๋ฐ๋ฅผ ๋ช ์์ ์ผ๋ก ์ ๋ฌํจ์ผ๋ก์ ์ฝ๋์ ๋งฅ๋ฝ์ ๋ณด๋ค ๋น ๋ฅด๊ฒ ํ์ ํ ์ ์์์ ๋๋ ์ ์์์ต๋๋ค.
C) ํ ์คํธ ์ฝ๋์ ์ค์์ฑ
ํ ์คํธ์ผ์ด์ค๋ฅผ ํตํด ๋จ์ํ ๊ธฐ๋ฅ์ 'ํ ์คํธ'ํ๋ ๊ฒ ๋ฟ๋ง ์๋๋ผ ํด์ผํ ์ผ์ ๋ช ์์ ์ผ๋ก ๋ํ๋ด๋ ๊ฒ ๋ํ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์ ์ ์์์ต๋๋ค.
๋ฏธ๋ฆฌ ๊ณํ๋ ๊ธฐ๋ฅ๋ค์ ์ ์ด๋๊ณ , ๊ทธ ๊ธฐ๋ฅ์ ๋ช ํํ๊ฒ ์ํํ ์ ์๋ ๋ค์ํ ๋ฐฉ๋ฒ๋ค์ ๊ตฌํํ์ฌ ํ๋ฒ์ ์๋ฒฝํ ์ค๊ณ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์๋ ํ ์คํธ์ฝ๋๋ ๋จ์ํ ํ ์คํธ์ ์ญํ ์ ๋์ด ๊ฐ๋ฐ์๊ฐ ํด์ผํ๋ ๊ธฐ๋ฅ๊ตฌํ์ ๋ฌด์ to-do list๋ก์ ์ฌ์ฉ๋ ์ ์์์ ๋๊ผ์ต๋๋ค.
์ด๋ฅผ ํตํด ํ ์คํธ์ฝ๋๋ฅผ ์ ์ค๊ณํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ณ ๋ฏผ์ ํด๋ณผ ์ ์์์ผ๋ฉฐ, ๊ทธ ๊ณผ์ ์์ ์ ๋ง์ ํ ์คํธ์ฝ๋ ์ค๊ณ์์น์ ์๋ฆฝํ ์ ์์์ต๋๋ค.
ํด๋น๋ด์ฉ์ ๋ณ๋์ ํฌ์คํธ๋ฅผ ํตํด ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค.
3. 2์ฃผ์ฐจ ์ดํ
๊ฐ์ธ์ดํ
๊ท์น์ ์ค์์ฑ
์ด๋ฒ์ฃผ์ฐจ ํ๋ฆฌ์ฝ์ค๋ ์ ๊ฒ ๊ท์น์ฎ ์ค์์ฑ์ ๋ค์ ํ๋ฒ ์ผ๊นจ์์ฃผ๋ ๊ธฐํ๊ฐ ๋์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ณ์/์์/๋ฉ์๋์ ์ด๋ฆ๊ณผ ์ฝ๋ ์ ์จ์ด์๋ ์ ์ ์ฝ๋ฉ์คํ์ผ์ ํตํด ๋น์ถฐ์ง ์ ๋ง์ ์ฝ๋ ๊ท์น์
๊ฐ์ ๊ตฌํ์ด๋ผ ํ๋๋ผ๋ ๊ฐ๋ฐ์๊ฐ ์ดํดํ๊ธฐ ํธํ์ฝ๋๊ฐ ๋ ์๋, ์ดํด์ ์์ ์ด ์ด๋ ค์ด ์ฝ๋๊ฐ ๋ ์๋ ์๋ค๋ ๊ฒ์ ๋๊ผ์ต๋๋ค.
ํ์ฌ๋ณ, ํ๋ก์ ํธ ๋ณ ์ปจ๋ฒค์ ์ ์ค์ ํ๋ ์ด์ ์ ๊ทธ ํจ์ฉ์ ๋ํด ๋ค์ ํ๋ฒ ์๊ฐํด๋ณผ ์ ์๋ ์ฃผ์ฐจ์์ผ๋ฉฐ, ์์ผ๋ก์ ์ฝ๋๊ตฌํ๊ณผ์ ์์ ์ฑ๋ํ๋ฉฐ ์ค๋ ฅ์ ๊ธฐ๋ฅผ ๊ฒ์ ๋๋ค.
๊ณตํตํ์ด ๋ถ์
2์ฃผ์ฐจ ๊ณผ์ ๋ ํจ์์ ๋ถ๋ฆฌ์ ํ ์คํธ๋๊ตฌ์ ์ฌ์ฉ๋ฒ์ ์ตํ๋ณด๋ ์ฃผ ์์ต๋๋ค.
๊ธฐ๋ฅ๋ชฉ๋ก์ ๊ด๋ฆฌํ๊ธฐ
๊ธฐ๋ฅ๋ชฉ๋ก์ ์์ฑํ ๋๋ ํด๋์ค ์ค๊ณ/๊ตฌํ ๋ฑ์ ์์ธ๋ด์ฉ์ ํฌํจํ์ง ์์์ผ ํฉ๋๋ค.
๋ํ ๊ธฐ๋ฅ๋ชฉ๋ก์ ์ค์ฌ์ผ๋ก ์ ๋ฆฌํ๋, ์์ธ์ํฉ ๋ํ ํจ๊ป ์ ๋ฆฌํด์ผ ํฉ๋๋ค. ๋ค๋ง ์์ธ์ํฉ์ ์์๋จ๊ณ์์ ํ๋ฒ์ ํ์ ์ด ์ด๋ ค์ฐ๋ฏ๋ก ๊ธฐ๋ฅ์
๊ตฌํํ๋ฉฐ ์ง์์ ์ผ๋ก ๋ณด์ํฉ๋๋ค.
๋ฉ์๋๊ฐ 1๊ฐ์ง ์ผ๋ง ํ๋๋ก ์ค๊ณํ๊ธฐ
์๋ด๋ฉ์ธ์ง ์ถ๋ ฅ, ์ฌ์ฉ์ ์ ๋ ฅ์ฒ๋ฆฌ, ์ ํจ๊ฐ ๊ฒ์ฆ์ ๋ชจ๋ ์ฌ์ฉ์ ์ ๋ ฅ์ ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฅ๋ค์ด์ง๋ง ๊ฐ๊ธฐ ๋ค๋ฅธ ๊ธฐ๋ฅ์ด๊ธฐ๋ ํฉ๋๋ค.
๋ฐ๋ผ์ ๊ฐ ๊ธฐ๋ฅ์ ๋ชจ๋ ํ๋์ ๋ฉ์๋์์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์๋ ์ฌ๋ฌ ๋ฉ์๋์์ ๊ฐ๊ฐ ๋ด๋นํ ์ ์๋๋ก ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด๋ฅผ ํตํด ๋ฉ์๋ ๋น ์ฝ๋๊ธธ์ด๋ฅผ ์ค์ด๊ณ ๋จ์ผ์ฑ ์์์น์ ์งํฌ ์ ์์ผ๋ฉฐ, ํ ์คํธ์ ์ฉ์ดํด์ง๋๋ค.
๋ฉ์๋๊ฐ 1๊ฐ์ง ์ผ๋ง ํ๋์ง ํ์ธํ๊ธฐ ์ด๋ ต๋ค๋ฉด ๋ค์ ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ์ ์ฉํด๋ณด๋ฉฐ ๊ณ ๋ฏผํด๋ณด๋ฉด ์ข์ต๋๋ค:
- ์ฌ๋ฌ ๋ฉ์๋์ ์ค๋ณต๋ ์ฝ๋๊ฐ ์กด์ฌํ๋๊ฐ
- ๋ฉ์๋์ ๊ธธ์ด๊ฐ ๊ธด๊ฐ (ex: 15์ค ์ด์์ธ๊ฐ?)
ํ ์คํธ๋ฅผ ์ ์์ฑํ๋ ๋ฐฉ๋ฒ
ํ ์คํธ ์์ฑ์ ๊ธฐ๋ฅ์ ์ ํ์ฑ์ ๊ฒ ๋ฟ๋ง ์๋๋ผ ์ฝ๋์ ์ฆ๊ฐ์ ํผ๋๋ฐฑ์ ๋ฐ์ ์ ์๋ค๋ ์ ์์ ์ค์ํฉ๋๋ค.
๋์๊ฐ ์ฝ๋์ ๊ตฌ์กฐ์ ์๋๋ฅผ ๋ช ํํ ์ดํดํ ์ ์๋๋ก ๋์์ฃผ๊ธฐ๋ ํฉ๋๋ค.
์ด๋ฐ ๋ฉด์์ ํ ์คํธ์ฝ๋๋ฅผ ์ฒ์๋ถํฐ ํฐ ๋จ์๋ก ์์ฑํ๋ ๊ฒฝ์ฐ
์ฌ๋ฌ ๊ธฐ๋ฅ์ ํ๋ฒ์ ํ ์คํธํ๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๊ธฐ๊น์ง ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ฒ ๋ฉ๋๋ค.
๋ฐ๋ผ์ ๋ฌธ์ ๋ฅผ ์๊ฒ ๋๋์ด ํต์ฌ ๊ธฐ๋ฅ๋ถํฐ bottom-up ๋ฐฉ์์ผ๋ก ํ ์คํธํ๋ ๊ฒ์ด ํจ๊ณผ์ ์ ๋๋ค.
'๐๐ป ์ธ๋ถํ๋ > [ํ๋ฆฌ์ฝ์ค] ์ฐ์ํํ ํฌ์ฝ์ค 7๊ธฐ - BE' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฐํ ์ฝ/BE/7๊ธฐ] Weekly Rewind - 1์ฃผ์ฐจ (1) | 2024.10.31 |
---|