์ค๋ ๋ฐ ๋๋ ค์๋ฐ ์ฐ์ํ ํ
ํฌ์ฝ์ค ํ๋ฆฌ์ฝ์ค
๊ฐ ์์๋์๋ค.!! ๋ฌผ๋ก ์ฐํ
์ฝ ํฉ๊ฒฉ์ด ์ต์ข
๋ชฉํ์ด์ง๋ง, ํ๋ก๊ทธ๋๋จธ๋ก์ ๋ถ์กฑํ ์ ์ ํ๋ฆฌ์ฝ์ค๋ฅผ ํตํด ์ฑ์๋ณด๊ณ ์ฑ์ฅํ๋ ๊ฒ ๋ํ ์ข์ ๊ฒฝํ์ด๋ผ ์๊ฐํฉ๋๋ค.
์ฒซ ์ฃผ์ฐจ์ ๊ณผ์ ๋ Git
์ ์ฌ์ฉ๋ฒ๊ณผ ์ฝ๋ ์์ฑ ์์น
,์ปค๋ฐ ์์ฑ ์์น
๋ฑ ์์ผ๋ก์ ํ๋ฆฌ์ฝ์ค๋ฅผ ๋๋นํ๋ค๋ ๋๋์ด ์์์ต๋๋ค.
https://github.com/woowacourse-precourse/java-calculator-7/pull/998
์ฐ์ 1์ฃผ์ฐจ ๊ณผ์ ์์์ ์์ ๋ชฉํ๋ฅผ ์ ํด๋ณด์์ต๋๋ค. ์ฝ๋๋ฅผ ์์ฑํ ๋ ๊ฐ์ด๋ ๋ถ ๊ฐ์๊ฒ ์๋ค๋ฉด ํจ์จ์ ์ผ๊ฑฐ๋ผ ์๊ฐํ์ต๋๋ค! ํ์ง๋ง ์ฝ๋ฉ์ ์์ํ๊ณ ๋๋ ์๋ฒฝํ๊ฒ ๋ชฉํ์ ๋ฐ๋ผ ๋ฌ์ฑํ๊ธฐ ๋ถ์กฑํจ์ ๋๊ผ๊ณ ์ฑ์๋๊ฐ ๋ฐฉ๋ฒ์ ์๊ฐํ์ต๋๋ค.๐ก
๊ฐ์ฒด ์งํฅ์์น์ ์งํค๊ณ ์ ๋
ธ๋ ฅํ์ฌ ์ฝ๋๋ฅผ ์์ฑํ์ต๋๋ค. ํนํ ๊ธฐ๋ฅ๋ณ๋ก ํด๋์ค๋ฅผ ๋๋์ด ๋จ์ผ ์ฑ
์ ์์น
์ ์งํค๊ณ ์ ํ์ต๋๋ค!๐
์ฒ์ ํ๋ก์ ํธ ๊ตฌ์กฐ๋ MVCํจํด์ ๋ฐ๋ผ ํจํค์ง๋ฅผ model
view
controller
๋ก ๋๋์์ง๋ง ์ดํ๋ ํจํค์ง๋ฅผ ์ถ๊ฐํ์ฌ ๊ธฐ๋ฅ๋ณ๋ก ํด๋์ค๋ฅผ ๋๋๊ณ ์ ํ์ต๋๋ค
<์ต์ข ํ๋ก์ ํธ ๊ตฌ์กฐ>
calculator/
โ
โโโ controller/
โ โโโ CalculatorController.java //์ปจํธ๋กค๋ฌ view์ ๋น์ฆ๋์ค ๋ก์ง์ ์ฐ๊ฒฐํ๋ค.
โ
โโโ model/
โ โโโ Calculator.java //๋น์ฆ๋์ค ๋ก์ง ๋ด๋น: parser๋ฅผ ํตํด ๊ตฌ๋ถํ ์ซ์๋ค์ ํฉ์ฐ์ ๊ตฌํจ.
|
โโโ parser/
โ โโโ DelimiterParser.java // ๊ธฐ๋ณธ๊ตฌ๋ถ์ ๋ฐ ์ปค์คํ
๊ตฌ๋ถ์๋ก ์
๋ ฅ๊ฐ์ ํ์ฑํจ.
โ โโโ InputParser.java // ์ ํจ์ฑ ๊ฒ์ฌ, ๊ตฌ๋ถ์ ํ์ฑ, ์ซ์๋ณํํ๋ ๋น์ฆ๋์ค ๋ก์ง.
โ โโโ NumberConverter.java // ์ซ์ ๋ฌธ์์ด์ ์ ์ํ์ผ๋ก ๋ณํํ๋ค.
โ
โโโ validator/
โ โโโ Validator.java // ์ ํจ์ฑ ๊ฒ์ฆ ๋ด๋น
|
โโโ view/
โโโ CalculatorView.java // ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ด๋น : ์
์ถ๋ ฅ
์ธํฐํ์ด์ค์ ์ถ์ ํด๋์ค๋ฅผ ํ์ฉํ๊ธฐ :
๋์ผํ ๊ธฐ๋ฅ
์ ํด๋์ค๋ก ๋๋๋ ๊ฒ์ ๋นํจ์จ์ ์ด๋ผ๊ณ ์๊ฐํ๊ณ ์ธํฐํ์ด์ค
์ ์ถ์ ํด๋์ค
๋ฅผ ๊ณ ๋ คํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ์ต๋๋ค. ์๋ฅผ๋ค์ด ๋ฌธ์์ด์ ๊ตฌ๋ถํ๋ ๊ธฐ๋ฅ๋ฑ์ ์ธํฐํ์ด์ค
๋ก ๋ช
์ํ์ฌ ์ ์ฐ์ฑ์ ๋๋ฆฌ๊ณ ์ ํฉ๋๋ค.๋์์ธ ํจํด ๊ณ ๋ คํด๋ณด๊ธฐ :
๊ฐ์ฅ ๋ถ์กฑํ ์ ์ด ๋ง์๋ ๋ชฉํ์๋๊ฒ ๊ฐ์ต๋๋ค. ๐
ํ์ง๋ง ํ
์คํธ์ ์ค์์ฑ์ ์๊ฒ๋์ด ํ
์คํธ์ ๋ํ ๊ณต๋ถ๋ฅผ ์ง์ค์ ์ผ๋ก ํ๊ฒ ๋ค๋ ์ด์ ์ด ์ปค์ก์ต๋๋ค.๐
ํ
์คํธ ์ผ์ด์ค๋ฅผ ์ต๋ํ ํ์ฉํ๊ณ ์ ํ์์ต๋๋ค. ํ
์คํธ์ ๋ํ ๊ณต๋ถ๊ฐ ๋ง์ด ๋ถ์กฑํ์ฌ ๋ค์ํ ๋ฌธ์์ ๋ธ๋ก๊ทธ๋ฅผ ํ์ฉํ์ฌ ํ๋์ฉ ์ ์ฉํด ๋ณด๋ ค๊ณ ํ์ต๋๋ค. ์๋์ ๊ฐ์ด ๊ตฌ์กฐ๋ฅผ ๋๋์ด ํ
์คํธ๋ฅผ ์งํํ์ต๋๋ค.
Junit
์๋ ํ
์คํธ ์ด๋ฆ์ ๋ช
์
ํ๊ฑฐ๋ ํ๋ผ๋ฏธํฐ ํ
์คํธ
๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ด ์๋ ๊ฒ์ ์ ์ ์์์ต๋๋ค. ์ด๋ฅผ ํ์ฉํ์ฌ ์ข ๋ ๋ฉด๋ฐํ ํ
์คํธ๋ฅผ ์งํํ๊ฒ ์ต๋๋ค.์ด์ ์๋ ์ฌ๋ฌ ํ๋ก์ ํธ์์ ์ ํด์ง ๊ท์น์์ด ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ๋ณด๋์ง๋ง ๋น์ฐํ๊ฒ๋ ์ ๋๋์ง ์์๊ณ , ์ด๋ฒ ๊ธฐํ๋ฅผ ํตํด ๊ท์น์ ์ธ ์ปค๋ฐ๋ฉ์์ง ์์ฑ์ ํด๋ณด๋ ๊ฐ๋
์ฑ์ด ์ ๋ง ๋ฐ์ด๋๋ค๋ ๊ฒ์ ๋๊ผ๊ณ ์์ผ๋ก ์ ๊ทน ํ์ฉํ ์์ ์
๋๋ค!
๋ฌธ์๋ฅผ ํด์ํ๊ณ ์ค์ต์ ์งํํด๋ณด์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ฆฌํ ๋ด์ฉ์ ๋ธ๋ก๊ทธ์ ์ฌ๋ฆฌ๊ธฐ๋ ํ์๊ณ ํ๋ฆฌ์ฝ์ค ์ปค๋ฎค๋ํฐ์ ๊ณต์ ํ์ฌ ์ฌ๋๋ค๊ณผ ์๊ฒฌ์ ๋๋๋ ๊ฒ๋ ์ฌ๋ฏธ๋๊ณ ํน๋ณํ ๊ฒฝํ์ด์์ต๋๋ค!๐
์ถํ์ ์ปค๋ฐ๊ณผ ๋์์ ์๋์ผ๋ก CHANGLOG.md
๋ฅผ ๋ง๋๋ ๊ณผ์ ์ ์ฐ์ตํ์ฌ ์ฌ๋๋ค๊ณผ ๊ณต์ ํด๋ณด๊ณ ์ ํฉ๋๋ค.
๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ ์ฃผ์
https://velog.io/post-stats/fa1d05ff-99c3-4e91-b2e6-561d03d10dcc
๊ฐ์ด๋ ๊ท์น์ ๋ณด๋ฉฐ ์ ๊ฐ ์ค์ฌ์ ์ผ๋ก ์๊ฐํ 4๊ฐ์ง๋ ์ด๋ ์ต๋๋ค!
1. ํด๋์ค ์ด๋ฆ์ ๋๋ฌธ์
๋ก ์์ํ๊ณ , CamelCase๋ฅผ ๋ฐ๋ฅผ ๊ฒ.
2. ๋ฉ์๋์ ๋ณ์๋ ์๋ฌธ์
๋ก ์์ํ๊ณ , CamelCase๋ก ์์ฑํ ๊ฒ.
3. ์์๋ ๋ชจ๋ ๋๋ฌธ์๋ก ์์ฑํ๊ณ , ๋จ์ด๋ ์ธ๋์ค์ฝ์ด
๋ก ๊ตฌ๋ถํ ๊ฒ.
4. ์ ์ ํ ์ค ๊ฐ๊ฒฉ๊ณผ ๋ค์ฌ์ฐ๊ธฐ ์ ์ง.
์ฒ์์๋ ๊ท์น์ ์๊ฒฉํ ๋ฐ๋ฅด๋ ๊ฒ์ด ๋ฒ๊ฑฐ๋ก์ธ ๋๋ ์์์ง๋ง, ๋ณ์์ ๋ฉ์๋์ ์ด๋ฆ์ ์๋ฏธ ์๊ฒ ์ง๋ ๊ฒ์ด ์ฝ๋์ ๊ฐ๋ ์ฑ์ ํฌ๊ฒ ๋์ฌ์ค๋ค๋ ๊ฒ์ ๋๊ผ์ต๋๋ค
๋จ์ํ๊ฒ ์๊ฐํ๋ ๋ถ๋ถ์์ ์ด๋ ค์์ ๊ฒช์๊ฒ ๊ฐ์ต๋๋ค.๐
์ฃผ์์ ์ต๋ํ ์ค์ด๊ณ ํด๋์ค๋ช
์ ๋ฉ์๋๋ช
์์ ๊ฐ์์ ์ญํ์ด ์์๋๊ฒ ์ง์ผ๋ ค๊ณ ๊ณ ๋ฏผ์ด ๋ง์ด ๋์์ต๋๋ค.
์์ ํด๋์ค๋ค์ parser
ํจํค์ง ์์์ ๋ฌธ์์ด์ ์ฒ๋ฆฌํ๋ ํด๋์ค๋ค์
๋๋ค. ๊ฐ์์ ์ญํ ์ ๋ฐ๋ผ ์ด๋ฆ์ ์๋ถํ๋ค๊ณ ์๊ฐํ ๋ถ๋ถ์ธ๋ฐ ์์ผ๋ก๋ ์ ์คํ๊ฒ ์ด๋ฆ์ ๋ถ์ฌํ๋๋ก ๋
ธ๋ ฅํ๊ฒ ์ต๋๋ค๐
์ ๋ ์ฒ์์ ๋จ์ํ ์ฃผ์ด์ง ํ
์คํธ ์ฝ๋๋ง ๋ณด๊ณ ๊ทธ๊ฒ์ ํด๋นํ๋ ์์ธ๋ง์ ์๊ฐํ์ต๋๋ค. ํ์ง๋ง ๋ฆฌ๋ทฐ๋ฅผ ํตํด ๋ค๋ฅธ ๋ถ๋ค์ ์ฝ๋๋ฅผ ํ์ธํด๋ณด๋ ์๊ฐ๋ณด๋ค ๋ง์ ์์ธ ์ํฉ
์ด ์์์ต๋๋ค. ์กฐ๊ธ ๋ ๊น๊ฒ ์๊ฐํ์ผ๋ฉด ์ฒ๋ฆฌํ ์ ์๋ ๋ฌธ์ ๋ค์ด๋ผ ๋์ฑ ์์ฌ์ ๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํจํดํน์ ์์ธ ๋ฉ์ธ์ง๋ฅผ ์์
๋ก ์ฒ๋ฆฌํ๋ค๋ฉด ์ถํ ๋๊ตฐ๊ฐ๊ฐ ์ ์ ์ฝ๋๋ฅผ ๋ดค์ ๋ ๋ณ์๋ค์ ์ง๊ด์ ์ผ๋ก ์ดํดํ ์ ์์๊ฑฐ๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
๋ฌธ์ํ
ํ๊ฒ์ค๋ฒ ์์ง๋์ด๋ง
์ด ์๋์ฌ์ ์ข์๋ค.์์
๋ก ์ฒ๋ฆฌํ์Character.isDigit()
์ฌ์ฉ์ ๊ณ ๋ คํด๋ณด์return
ํด๋ ์ข์ ๊ฒ ๊ฐ๋ค.์ต๋ํ ์์ฑํ AI์ ํ์ ๋น๋ฆฌ์ง ์๊ณ ์ค์ค๋ก ์ด๋์ ๋์ ์ค๋ ฅ์ธ์ง ํ์ธํ๊ณ ์ถ์๋ค. ๊ทธ ๊ฒฐ๊ณผ ์ ์ฒด ๊ตฌ์กฐ๋ฅผ ๋ฐ๊พธ๊ธฐ๋ํ๊ณ , ๋ฆฌํฉํ ๋ง
์ ์๊ฐ์ ๋ง์ด ํ ์ ํ๋ค. ํ์ง๋ง ์์ฑ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ๋ฟ๋ฏํ๊ธฐ๋ ํ๊ณ ๋ค๋ฅธ ๋ถ๋ค์ ์ฝ๋๋ฅผ ๋นจ๋ฆฌ ๋ณด๊ณ ์ถ์๋ค. ๋๋ฌด๋ ์ํ๋ ์ฌ๋๋ค์ด ๋ง์๊ณ ๊ทธ๋ถ๋ค์ ์ฝ๋๋ฅผ ํตํด ๋ง์ด ๊ฐ์ ์ ์ ์ฐพ๊ณ 2์ฃผ์ฐจ์๋ ์ข ๋ ์ํด๋ณด๊ณ ์ถ์ ์์ฌ์ด ์๊ฒผ๋ค.
๊ทธ๋ฆฌ๊ณ !! ์คํฐ๋
์๋ ๋ค์ด๊ฐ๋ค! ๋ค์ํ ์ฌ๋๋ค๊ณผ ์๋ก์ ์ฝ๋๋ฅผ ์ดํดํ๋ คํ๊ณ ์ฅ๋จ์ ์ ์ด์ผ๊ธฐํ๋ ๊ณผ์ ์ด ๋๋ฌด๋๋ ์ฌ๋ฐ์๋ค!!
์ํ์๋ ๋ถ๋ค์ด ๋๋ฌด ๋ง์ผ์
์ ์ฃผ๋
์ด ๋ค๋ปํ์ง๋ง๐ ์คํ๋ ค ๊ทธ๋ถ๋ค๊ณผ ๋ค์ํ ์๊ธฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์๊ฑด ์ ๋ง๋ก ํน๋ณํ ๊ฒฝํ์ด์๋ค.!! ์์ผ๋ก ๋์ฑ ๋ค์ํ ์ฌ๋๋ค๊ณผ ๋ง๋๋ณด๊ณ ์ถ์ด ์คํฐ๋๋ฅผ ๋๋ ค๋ณผ ๊ณํ์ด๋ค.๐
์์์ ๋ฏธ์ฝํ๋๋ผ๋ ๋์ ์ฐฝ๋ํ๋ฆฌ๋ผ.
์ด๋ฒ ์ฐํ
์ฝ ํ๋ฆฌ์ฝ์ค์ ๋์ ๋ค์ง์ด๋ค!๐
์ฒ์๋ถํฐ ์ํ๋ ์ฌ๋์ ์ ๋ง ๊ทน์์๋ผ๊ณ ์๊ฐํ๋ค. ์ฒ์์๋ ๋ฏธ์ํ๊ณ ์ค์๋ ๋ง์ด ํ๋๋ผ๋ ๋ฉ์ถ์ง์๊ณ ์ ์ฐจ ์ฑ์ฅํ๋ ๊ฐ๋ฐ์์ ๋ชจ์ต์ด ์ฐํ
์ฝ์ ์ํ๋ ์ธ์ฌ์์ด ์๋๊น? ์๊ฐํ๋ค!!
2์ฃผ์ฐจ๋ ์ด์ฌํ ๋ฌ๋ ค๋ณด์โ