์ ์ฒด ํผ๋๋ฐฑ
1. README.md๋ฅผ ์์ธํ ์์ฑํ๋ค. (3์ )
์ต๋ํ ์์ธํ ์์ฑํ๊ธฐ๋ ํ์์ง๋ง, ๋ถํ์ํ ๋ด์ฉ๋ค์ด ๋ง์๋ ๊ฒ ๊ฐ๋ค. ํนํ ์ด๋ฒ์ฃผ์ฐจ๋ถํฐ๋ ํด๋น ํ๋ก์ ํธ๊ฐ ์ด๋ค ํ๋ก์ ํธ์ธ์ง๋ฅผ ๋ ๋ํ๋ด์ฃผ์ด์ผ ์ข์ ๊ฒ ๊ฐ๋ค.
2. ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์ฌ๊ฒํ ํ๋ค. (2์ )
๋ฆฌ๋๋ฏธ๋ฅผ ์์ธํ๊ฒ ์ ์ผ๋ ค๊ณ ํ๋ค๊ฐ ๋ณด๋, ๋ชจ๋ ๋ฉ์๋๋ค์ ์ด๋ฆ์ ํจ๊ป ์ ์ด๋ฒ๋ ธ๋ค. ํ์ง๋ง ์ด๋ ๊ฒ ๊ณ์ํด์ ๋ณ๊ฒฝ๋ ์ ์๋ ๋ถ๋ถ๋ค์ ์์ฑํ๋ ๊ฑธ ์ง์ํ๋ผ๊ณ ํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๊ตฌํํ ๊ธฐ๋ฅ ๋ชฉ๋ก์๋ง ๋ ์ง์ค์ ํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
์ถ๊ฐ์ ์ผ๋ก ์ ์์ ์ธ ์ํฉ ๋ง๊ณ , ์์ธ์ ์ธ ์ํฉ๋ ์ค์ํ๊ธฐ์ ์ด๋ฌํ ๋ถ๋ถ๋ ์ ๋ฆฌํด์ ์์ฑํด์ผ๊ฒ ๋ค.
3. ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์ ๋ฐ์ดํธํ๋ค. (4์ )
๋ฆฌ๋๋ฏธ๋ ๋ถ๋ช ๋ณํ ์ ์๊ธฐ ๋๋ฌธ์, ์ฌ๋ฌ ๋ฒ ์์ ์ ํ๋ฉด์ ์ ๋ฐ์ดํธ๋ฅผ ์งํํ์๋ค. ๋ฌผ๋ก ๋ถํ์ํ๊ณ ๋ฐ๋ณต์ ์ธ ์ ๋ฐ์ดํธ๋ ์ง์ํ๋ ๊ฒ์ด ์ข๊ฒ ๋ค.
4. ๊ฐ์ ํ๋ ์ฝ๋ฉํ์ง ์๋๋ค. (2์ )
1์ ์ ์ค์ผํ์ง๋ง, ์ด๋ฒ์๋ ์ ์ถ๋ ฅ ๋ฉ์ธ์ง์ ์๋ฌ ๋ฉ์ธ์ง๋ ์์๋ก ๋ง๋ค์์ผ๋ฏ๋ก 2์ ์ ์ฃผ์๋ค.
์ ์๋ค์ ๋งค์ง๋๋ฒ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ์ด ๋ถ๋ถ์ ๊ผญ ์์ ์ด ํ์ํ ๊ฒ ๊ฐ๋ค.
5. ๊ตฌํ ์์๋ ์ฝ๋ฉ ์ปจ๋ฒค์ ์ด๋ค. (2์ )
์ ๋ชฐ๋๋ ๋ถ๋ถ์ด๋ค.
- ์์
- ์ธ์คํด์ค (๋ฉค๋ฒ) ๋ณ์
- ์์ฑ์
- ๋ฉ์๋
์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํด์ผํ๋ค๊ณ ํ๋ค. ์ ๊ธฐ์ตํด๋์.
6. ๋ณ์ ์ด๋ฆ์ ์๋ฃํ์ ์ฌ์ฉํ์ง ์๋๋ค. (1์ )
์งํค์ง ๋ชปํ ๋ถ๋ถ์ด๋ค. ์ฐจ ์ด๋ฆ์ด ์ ์ฅ๋ ๋ฐฐ์ด์ carNamesArray์ ๊ฐ์ด ์ฌ์ฉํด๋ฒ๋ ธ๋ค.
7. ํ ํจ์๊ฐ ํ ๊ฐ์ง ๊ธฐ๋ฅ๋ง ๋ด๋นํ๊ฒ ํ๋ค. (4์ )
ํจ์๋ ๊ธฐ๋ฅ์ ์ต๋ํ ๋๋๋ ค๊ณ ๋ ธ๋ ฅํ๊ธฐ๋ ํ๋ค.
๋ค๋ง controller ๋ถ๋ถ์์์ ๋ถ๋ฆฌ๊ฐ ์์ฌ์ฐ๋, ์ด ๋ถ๋ถ ์ ๊ฒฝ์จ์ ๊ตฌํํด์ผ๊ฒ ๋ค.
8. ํจ์๊ฐ ํ ๊ฐ์ง ๊ธฐ๋ฅ์ ํ๋์ง ํ์ธํ๋ ๊ธฐ์ค์ ์ธ์ด๋ค. (3์ )
ํจ์๋ฅผ ์ ์ ํ๊ฒ ๋๋๋ ๋ณธ์ธ์ ๊ธฐ์ค์ด ์ค์ํ๋ค๋ ๋ง์ธ ๊ฒ ๊ฐ๋ค.
์ด๋ ๊ณ์ํด์ ๋ฐ๋ณตํ๋ฉฐ ๊ฐ์ ์ก๋ ๊ฒ์ด ์ค์ํ ๊ฒ ๊ฐ๋ค.
9. ํ ์คํธ๋ฅผ ์์ฑํ๋ ์ด์ ์ ๋ํด ๋ณธ์ธ์ ๊ฒฝํ์ ํ ๋๋ก ์ ๋ฆฌํด๋ณธ๋ค. (3์ )
ํ ์คํธ ์์ฑ์ด ๋จ์ง ๊ธฐ๋ฅ์ ์ ๊ฒํ๋ ์ด์ ๋ง ์์ง ์๋ค๊ณ ํ๋ค. ๋ณธ์ธ์ ์ฝ๋์ ๋ํด ๋น ๋ฅด๊ฒ ํผ๋๋ฐฑ์ ๋ฐ๊ฑฐ๋, ํ์ต ๋๊ตฌ๋ก๋ ์ฌ์ฉํ ์ ์์ผ๋, ์ด๋ฌํ ๋ถ๋ถ๋ ์๊ฐํด๋ณด๋ฉด์ ํ ์คํธ์ ์ ์ฉํจ์ ์์๋ณผ ํ์๊ฐ ์๋ค.
10. ์ฒ์๋ถํฐ ํฐ ๋จ์์ ํ ์คํธ๋ฅผ ๋ง๋ค์ง ์๋๋ค. (3์ )
์คํ๋ ค ์ด๋ฒ์๋ ๋๋ฌด ์๊ฒ ๋ฉ์๋ ํ๋ํ๋ ์ฉ๋ง ๋ง๋ค์ด์ ์์ฌ์ ๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋์ ํผ๋๋ฐฑ์ผ๋ก๋ ๊ธฐ๋ฅ์ ๊ฒ์ฆํ๋ ๊ฒ์ด ์๋๋ผ, ๋ฉ์๋๊ฐ ์ ์ง์ฌ์ก๋์ง๋ง ํ์ธํ๋ ๋๋์ด๋ผ๊ณ ํ๋ค.
์ด๋ฒ์๋ ๊ธฐ๋ฅ ๋ฉด์ผ๋ก ์ ๋๋์ด์ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํด๋ณด์์ผ๊ฒ ๋ค.
PR ๋ฆฌ๋ทฐ
1. ๋งค์ง ๋๋ฒ๋ฅผ ์ฌ์ฉ
- ๋ฌธ์์ด์ ์ ์ฒ๋ฆฌํ์ง๋ง, ์ ์๋ ๊ทธ๋๋ก ๋งค์ง ๋๋ฒ๋ฅผ ์ฌ์ฉํ์์
- ์ฌ์ง์ด ์์
ONE_STEP์ ๋ง๋ค์์์๋, ์ฌ์ฉ์ ํ์ง ์์
2. ์๋ฐ ์ปจ๋ฒค์ ์ ์งํค์ง ๋ชปํ ๋ถ๋ถ์ด ์์
- ํจ์ ์ธ์๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ฃ์ ๋, ์ฝค๋ง ๋ค์ ๊ณต๋ฐฑ ํ์
- ์ ๋ค๋ฆญ์ค ํ์ ์ ์ธ ์์๋ 1๋ฒ๊ณผ ๋์ผ, ์ฝค๋ง ๋ค์ ๊ณต๋ฐฑ ํ์
3. ๋ณ์๋ช ์ ์๋ฃํ์ด ๋ค์ด๊ฐ ์์
carNamesArray์ ๊ฐ์ ๋ค์ด๋ฐ X
4. ๋ฆฌ๋๋ฏธ์ ํจ์๋ช ์ ์ฐ๋ ๊ฒ์ ์ง์
- ์ฝ๋๊ฐ ๋ฐ๋ ๋๋ง๋ค ๋งค๋ฒ ๋ณ๊ฒฝํ ์๋ ์์ผ๋, ๋ค์๋ถํฐ๋ ๋ชจ๋ ํจ์๋ฅผ ์ฐ๋ ๊ฒ๋ณด๋ค ์ ์ฒด์ ์ธ ๊ธฐ๋ฅ๋ง ์ ๋ ๊ฒ ๋์ ๋ณด์
5. Controller ํด๋์ค ๋ด๋ถ์์๋ง ์ฌ์ฉํ๋ ๋ฉ์๋๋ค์, public์ผ๋ก ์ ์ธํจ
- ์๊ฐ์ด ๋ถ์กฑํ์ฌ ์ ๋๋ก ์ฒดํฌํ์ง ๋ชปํ ์ , ๋ค์๋ถํฐ๋
์ ๊ทผ ์ ์ด์๋ฅผ ์ ํ์ธํด์ผ ํ ๋ฏํจ
6. ์๋ฌ ๋ฉ์ธ์ง๋ฅผ ๋ณ๋๋ก ์ถ๋ ฅํ๊ธฐ๋ณด๋ค๋, ์๋ฌ ๋ฉ์ธ์ง ๊ฐ์ ์ ๋ฌ
IllegalArgumentException()์ ์๋ฌ ๋ฉ์ธ์ง ๊ฐ์ ์ ๋ฌํ๋ ๋ฐฉ์์ผ๋ก ์์
๊ธฐ์กด
public static void validateIsNotNull(String inputString){
if (inputString == null
|| replaceCommaToBlank(inputString).isBlank()) {
ErrorMessage.isNotNullError();7. when then์ ๊ผญ ๊ตฌ๋ถํ์ง ์์๋ ๋จ. ์ ๊ณต๋ ํ ์คํธ๋ฅผ ์ฐธ๊ณ .
- ์ถ๊ฐ์ ์ผ๋ก ๋์ง๋ ๋ฉ์ธ์ง๊ฐ ์ ์ ํ์ง๋ ํ ์คํธ
8. ์๋ํ๋ ํ์์ธ tryNumber์ ์ค์ํ ๋ณ์๋ผ ๋ฐ๋ก ๊ด๋ฆฌํด๋ ์ข์ ๋ณด์
9. Utils๋ก ์ธ์ธํ๊ฒ ๋๋ ๊ฒ์ ์ข์ผ๋, ์กฐ๊ธ ๋ถํ์ํ ๋ฉ์๋ ์์ฑ์ ์ง์ํด๋ ์ข์ ๋ณด์
10. ํจ์ ๋ค์ด๋ฐ ์ ์ถ์ฝ ํ์ง ์๋๋ก, ์ด๋ฆ์ ํตํด ์๋๋ฅผ ๋๋ฌ๋ด๋๋ก
- ์ฐจ๋ฅผ ์ด๋์ํค๋
move์ ๊ฒฝ์ฐ์๋ ๋ค์ด์ค๋ ๋๋ค ๊ฐ์ ์ํด ์์ง์ด๊ฑฐ๋ ์์ง์ด์ง ์์ ์ ์๊ธฐ ๋๋ฌธ์,moveOrStay๊ฐ์ ๋ค์ด๋ฐ์ด ์ ์
11. Enum ํ์ ์ ํ์ฉํ๋ ๊ฒ ์ถ์ฒ
- 3์ฃผ์ฐจ ๋ฏธ์
๋ถํฐ๋ Enum ํ์
์ ํ์ฉํด์,
Inputํด๋์ค์์ ์ ๋ ฅ์ ๊ดํ ์ถ๋ ฅ๊น์ง ๋ชจ๋ ํ๋๋ก ์ ์ฉ
12. Controller ๋ด๋ถ์์ ๊ธฐ๋ฅ์ ๋ ์ ๋๋๋ ๊ฒ์ด ์ข์ ๋ณด์
- ์๋ฅผ ๋ค์ด ์
๋ ฅ์ ๋ฐ์์ค๋
getCars๋ผ๋ ๋ฉ์๋์์
- Input ๋ฉ์ธ์ง ์ถ๋ ฅ ํ Input
- ์ ํจ์ฑ ๊ฒ์ฌ
- ๋ฐฐ์ด๋ก ๋ฐ์์ด
๊น์ง ์งํํ๋ค๋ฉด ๊ฐ๋ ์ฑ์ด ํจ์ฌ ์ข์์ง ๊ฒ
13. static์ ๋ง์ด ์ฌ์ฉํ๋๋ฐ, ์ด๋ ๊ฐ์ฒด์งํฅ์ ์ผ๋ก ์ข์ง ์์
- ์ง๊ธ๊น์ง๋ ๊ฐ์ ํด๋์ค์์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ค๋ฉด
static์ ๋ถ์ฌ์ผํ๋ค๊ณ ์๊ฐํ๋๋ฐ, ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ํธ์ถํ๋ฉด ๊ฐ๋จํ ํด๊ฒฐํ ์ ์์ - 3์ฃผ์ฐจ๋ถํฐ๋ ๊ผญ ๊ณ ์ณ์ผ ํ ๋ฏ
14. ํ ์คํธ์ ๋ชฉ์ ์ ๋ค์ ์๊ฐ. ํจ์๊ฐ ์ ๋ง๋ค์ด์ก๋์ง ๋ณด๋ค๋, ๊ตฌํํ ํด๋์ค์ ๊ธฐ๋ฅ ๊ฒ์ฆ์ด ์ค์ํ ๊ฒ
- ๊ทธ๋ฌ๋ฏ๋ก ํ ์คํธ ์ฝ๋๋ฅผ ๋๋ฌด ๋ง์ด ๋ง๋ค๊ธฐ ๋ณด๋ค๋, ์ ํ ๊ธฐ๋ฅ๋ง๋ค ํ ์คํธ ์ฝ๋๋ฅผ ์ ์์ฑํ๋ ๊ฒ์ด ์ข์ ๋ณด์
15. Utils๋ฅผ ๋ ์ชผ๊ฐ๋ ๊ฒ๋ ๊ด์ฐฎ์ ๋ณด์
stringUtils,randomUtils๋ฑ์ผ๋ก ์ธ๋ถํ ํด๋ณด๊ธฐ
16. ์๋ฌ ๋ฉ์ธ์ง์์ ๋ ์๋๋ฅผ ๋๋ฌ๋ด๋๋ก ๋ค์ด๋ฐ
IS_NOT_NULL_ERROR_MESSAGEโNULL_ERROR_MESSAGEbooleanํ์ ์is~๋has~๋ก ๋ค์ด๋ฐ
17. ์ด์ฐจํผ ์ฐ์น์ ์ด๋ฆ๋ง ์ถ๋ ฅํด์ฃผ๋ฉด ๋๊ธฐ์, ๋จ๋ ์ฐ์น๊ณผ ๊ณต๋ ์ฐ์น์ ์ถ๋ ฅํ ๋ ๋๋ ํ์๊ฐ X
ArrayList์ ํฌ๊ธฐ๊ฐ 1์ด๋ฉดString.join(", ", jointWinners)์ ๊ฒฐ๊ณผ๊ฐ์ดsoloWinner.get(0)์ ๋์ผํ๊ธฐ ๋๋ฌธ์ ํ๋์ ๋ฉ์๋์์ ์ฒ๋ฆฌํ ์ ์์
18. ์๋ฌ๋ฅผ ๋์ง ๋, ์๋ฌ ๋ฉ์ธ์ง๋ ํจ๊ป ๋์ ธ์ฃผ๊ธฐ
throw new IllegalArgumentException(ErrorMessage.separatorError());๊ฐ์ ๋ฐฉ์์ผ๋ก ์ถ๋ ฅํ ์ ์๋๋ก ํด๋ณด๊ธฐ
19. HashMap์ ์ฌ์ฉํ ๊ฒ์ ์ข์ ์์ด๋์ด์ด๋, ์์๊ฐ ๋ณด์ฅ X
LinkedHashMap์ ์ฌ์ฉํ๋ฉด ์์๊ฐ ๋ณด์ฅ๋จ
20. ๋ถ๋ณ ๊ฐ์ฒด ์์ฑ ์, record ์ฌ์ฉ๋ ๊ณ ๋ ค
recordํด๋์ค๋ฅผ ์ฌ์ฉํ๋ฉด, ๋์ฑ ํธ๋ฆฌํ๊ฒ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅ
21. ํจ์ ๋ค์ด๋ฐ ์, ๋์ฌ๊ฐ ๋งจ ์์ ๊ฐ๋๋ก
์) ๋ฌธ์์ด์ ์ ์ํ์ผ๋ก ๋ฐ๊พธ์ด ์ฃผ๋ ๋ฉ์๋
- ๊ธฐ์กด :
StringToInt - ๋ณ๊ฒฝ :
ConvertStringToInt