[java] GenerateExams.jar review
Jun 25, 2022
๋๋์ด generateExams.jar (project problemshooter) ๊ฐ ๋์ด ๋ฌ๋ค.
์ด ํ๋ก์ ํธ๋ฅผ ์ด์ ์๊ฐํด๋ณด๋ ค๊ณ ํ๋ค!
ํ๋ก์ ํธ ๊ธฐ๊ฐ : Jan 10 - Feb 11 (32 days)
1) Object ๊ตฌ์ฑ ๋ง๋ค๊ธฐ
๊ฐ์ฅ ์ด๊ธฐ์ Problem, ๋ฉ์ธ class ( ํ๋ jar ์ entry-point), Iteration ์ผ๋ก ๋ง๋ค์๋ค. ๋ณํ๋ฅผ ๊ฒช์ผ๋ฉฐ Iteration ์ด IterateIndex ๋ก ๋์ฒด๋์๋ค. Object ์ Attribute ๋ฅผ ์ด๋ป๊ฒ ๊ฐ์ง๊ณ ์์ด์ผ object ์ ์ ์ฒด ํ๋ก์ ํธ๊ฐ lightweight ํด์ง๊น ๊ณ ๋ฏผํ๋ค.
2) ์ฃผ์ด์ง ์์ฃผ์ ๋ค ์ค์์ ์ํ๋ ๋งํผ select ํ๊ธฐ
์ด ๋ถ๋ถ์ด ์์์ธ๋ก ๊น๋ค๋ก์ ๋ค. instance ๋ฅผ ๋ค ๋ง๋ค์ด์ ๊ทธ ์ค์์ ๋ฝ์์ง, ์๋ ์ซ์๋ฅผ ๋ฝ๊ณ ๊ทธ์ ๋ฐ๋ผ ํ์ํ instance ๋ง ๋ง๋ค์ง. ์ซ์ ๊ณ ๋ฅด๋ ๊ฒ๋ combination ์ ๊ตฌํํ๋๋ฐ ๊ฝค ์ ๋จน์๋ค. loop ๋ฅผ ์ฌ์ฉํด์ ๊ฐ๋จํ ๊ตฌํํ๋ ค๋ exception handling ์ด ํ์์ ์ด์๋ค.
3) ๋ฌธ์ ์ฝ์ด์ค๊ธฐ
๋ฌธ์ ํ์ผ๋ค์ ์ด๋ค ์์คํ ์ผ๋ก ๊ตฌ์ถํ ๊น ๊ณ ๋ฏผํ๋ค. web database ๋ฉด ์์ฃผ ์ ๊ธฐ์ ์ด๊ณ ์ข๊ฒ ์ง๋ง ๋ด๊ฐ ํ ์ค ๋ชฐ๋ผ์ ๋ชปํ๋ค. ํ ํ์ผ๋ก ํ์๋ ๋งค๋ฒ ํ์ผ ์ฝ์ ๋ ์๊ฐ ๋ถํ์ํ๊ฒ ์ก์๋จน์ ๊ฒ ๊ฐ์๋ค. ๊ทธ๋์, ํด๋๋ฅผ ๋จ๊ณ์ ์ผ๋ก (cascading system์ผ๋ก) ๋ง๋ค์๋ค. ์ด์งํผ ๊ฐ ๋ฌธ์ ๋ค ๋ค ์ ๋ ฅํด์ผ ํ๋๊น ๊ฐ๊ฐ ํ์ผ ๋ง๋๋ ์ ์ฅ์์๋ risk ๋ ์ ๊ณ ๊ตฌ์กฐ์ ์ด์ด์ง ๊ฒ ๊ฐ์๋ค. ํ์ผ ํ์์ ํ๋ก์ ํธ์์ ๋์ด ์ฝ๊ธฐ ์ข๊ฒ .csv ๋ก ๊ฒฐ์ ํ๋ค. (๋ฌผ๋ก ๋ค๋ฅธ ํ์ผ ํ์๋ ์ด๋์ ๋ ๋๊ฒ if-else ๋ก ์งฐ๋ค.)
4) v1.0 ๋ฌธ์ CLI ์ ๋ฟ๋ฆฌ๊ธฐ
๋งจ์ฒ์์ ์ฃผ๋ฌธ ๋ฐ์ ๋ ๋ถ๋ช GUI ๋ก ํด๋ฆญํด๋ฆญ ํ๋ฏ์ด(Quizlet ๋ง๋ฅ) ํ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค์ด๋ฌ๋ผ ์ฃผ๋ฌธ์ ๋ฐ์๋ค. ๊ทธ๋ฐ๋ฐ GUI ๋ฅผ ํ๋ ค๋ AWT ๋ ๋๋ฌด ๊ตฌ์์ด๊ณ , javafx ๋ goorm.ide ์์ ์ ์๋์๋ค. ๊ตฐ๋์์ ์ฝ๋ฉํ๋ ๊ฒ์ด ์ด๋ ๊ฒ ์ด๋ ต๋ค. ์ํฉ์ ์ค๋ช ๋๋ฆฌ๋ ๊ทธ๋ฅ ์ํ์ง ๋ฝ๋ฏ์ด ๋ง๋ค์ด์ก์ผ๋ฉด ์ข๊ฒ ๋ค๊ณ ์์ ํ์ ์ CLI ๋ก ๋ฌธ์ ์ ๋ต์ด ์ ๋ฝํ๋์ง ๊ตฌํํด๋ณด์๋ค. ์ถ์ ์ ์ฑ์ ๋๊ฐ์ง๋ฅผ ๋ชจ๋ ๊ตฌํํด๋ณด์๋ค.
5) excecutable jar ๋ก publish ํ๊ธฐ
์ฒ์์๋ ์คํ๋ง ํ๋ฉด (ํ์ผ ๋ชฉ๋ก์ด ์ ๋ฆฌ๋์ด์๋) ํ ์คํธ ํ์ผ์ ์ฝ์ด์์ ๋ฌธ์ ๋ฅผ ๋ฝ๋ ์์ผ๋ก ๊ตฌํํ๋ค. ๊ทธ ํ์ผ์ ์ด๋ฐ ์์ด์๋ค.
3,6,7,11
2,5,6,1
์ด๋ ๊ฒ ์จ์์ผ๋ฉด, 7์ 1๋จ์(์ฒซ๋ฒ์งธ์ค์ด๋๊น) 3์๋จ์(๊ทธ ์ค์์ ์ธ๋ฒ์งธ ์ซ์๋๊น)์ ๋ฌธ์ ๊ฐ 7๊ฐ ์๋ค๋ ๋ป์ด์๋ค. ๊ทธ๋ฐ๋ฐ ์ด๋ ๊ฒ ํ๋๊น ๋ฌธ์ ์ํ์ ๋ณ๋์ฌํญ์ด ์์ผ๋ฉด ์ด ํ์ผ๋ ์ ๋์ดํธ ํด์ค์ผ ํ๋ค๋ ๋ฌธ์ ๊ฐ ์์๋ค. ๋, ์ ๋ฐ์ดํธ ๋ ํ์ผ์ ํ๋ก๊ทธ๋จ์ด ๋ค์ ์ฝ์ด์์ ํ๋ก๊ทธ๋จ์ ์ฌ๊ฐํ๋ ์์ผ๋ก ํ๋, I/O ์์ ๋๋ฌด ๋นํจ์จ ์ ์ด์๋ค. (๋ด์ฉ์ ํ์ผ๋ก export ํ๋ค๊ฐ ๋ค์ ์ฝ์ด์ค๋ ์). ๊ทธ๋์ v2.0 ์ ํ์ผ์ ์ ์งํ๊ณ , v3.0 ๋ถํฐ๋ ํ์ผ ์์ด ๊ตฌํํ์๋ค.
6) ํ๋ก๊ทธ๋จ flexibility exhancement
์ด์ ๊ฑฐ์ ๊ณจ๊ฒฉ์ ์์ฑ๋ ์ํ์๋ค. ๋ค๋ง, ๋ฌธ์ ์๋ผ๋๊ฐ ๋ฌธ์ ์ํ ๋๋ ํ ๋ฆฌ path ๋ผ๋๊ฐ ํ๋ ๊ฒ๋ค์ด ํ๋ก๊ทธ๋จ ๋ด ๋ณ์๋ก ์ง์ ๋์ด ์๋ค ๋ณด๋๊น ๊ณ ์ ์ ์ด์๋ค ๋ฌธ์ ๋ฅผ ํ๋ก๊ทธ๋จ ํ ์คํธํ ๋ 10๋ฌธ์ ๋ก ์ง์ ํ๋๋ฐ, ๋ฌธ์ ์ํ ํฌ๊ธฐ์ ๋ฐ๋ผ 40 ๋ฌธ์ ๊ฐ ํ์ํ ์๋ ์๊ณ 2-3 ๋ฌธ์ ๋ง ํ์ํ ์๋ ์๊ฒ ๋ค ์ถ์๋ค. ์ด๋ฐ ๊ฒ์ ์ฌ์ฉ์ ์ทจํฅ์ ๋ฐ๋ผ ์กฐ์ ํ ์ ์๋๋ก, config.txt ํ์ผ์ ๋ง๋ค์ด์ ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋ ์ฝ์ด์ attribute ๋ฅผ ์ ์ฐํ๊ฒ ์ธ ์ ์๊ฒ ํ๋ค.
Exception handling ๋ ํ๋ค. ๋์ผ ๊ฐ๋ฐ์๋ผ์ ํ๋ก๊ทธ๋จ์ algorithm ์ ์๋๊น ๋ฌธ์ ๊ฐ ์๊ธฐ์ง ์๊ฒ ์ data ๋ฅผ ์ฃผ๊ฒ ์ง๋ง, ์ฌ์ฉ์๋ค์ ๊ทธ๋ ์ง ๋ชปํ๋ค. ๊ทธ๋์, ํ๋ก๊ทธ๋จ์ด ์ ์์ ์ผ๋ก ์คํ๋์ง ์์ ๊ฒฝ์ฐ๋ฅผ ๋๋นํด์ try-catch ๋ฅผ ๋นก์ธ๊ฒ ์งฐ๋ค. ์ฃผ๋ก ์ผ์ด๋ ๋ฒํ ์๋ฌ๋ค๋ ๋ฏธ๋ฆฌ catch ํด๋์๋ค.
- error.txt, log.txt ๋ฅผ ๋ง๋ค์ด์ ํ๋ก๊ทธ๋จ์ด ์ด๋ป๊ฒ ๊ตฌ๋๋์๋์ง ๋ณผ ์ ์๊ฒ ๋ง๋ค์๋ค.
- ํ๋ก๊ทธ๋จ ์ค ์ด๋๋ถ๋ถ์์ ์๋ฌ๊ฐ ๋ฌ๋์ง (์ encapsulation ํด์) error.txt ์ ์ถ๋ ฅ๋๊ฒ ํ๋ค. ํน์ ์๊ฐ์ง ๋ชปํ ์๋ฌ๊ฐ ๋ฐ๊ฒฌ๋๋ฉด ์ฐ๋ฝํ ๊ฐ๋ฐ์ ์ฐ๋ฝ์ฒ๋ ๋จ๊ฒจ๋์๋ค.
- ์ด๋ป๊ฒ ๋๋๊ฐ์ ์์ ํ๊ฒ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๊ฐ ๋ ์ ์๋๋ก catch ํ๋ค.
์ด์ ์ฌ์ฉ์๋ค์ ์ํด์ README ํ์ผ์ (.md ๋ .txt๋ก) ์์ฑํ๋ค. ์ด๊ฒ ์ ๋ง ๊ท์ฐฎ์ ์์ ์ด์๋ค. ๋ ๋ค ์๊ณ ์๋ ๋ด์ฉ์ธ๋ฐ, ์ํ ๋ชจ๋ฅด๋ ์ฌ๋๋ ์ ์ฌ์ฉํ ์ ์๊ฒ ์ฌ์ฉ ์ค๋ช ์๋ฅผ ์ด๋ค๋ ๊ฒ์ด ์ฝ์ง ์์๋ค. ์๋, ๋ฌด์ง๋ง์งํ๊ฒ ๊ท์ฐฎ์๋ค. ๊ธฐ๋ณธ์ ์์ด๋ก ์ฐ๊ณ , ํ๊ธํ์ ๊ฐํ๊ณ ์ ํ์ ๋น๋ ธ๋ค.
7) ๋ง์ง๋ง ๋ง๋ฌด๋ฆฌ
๋ฌธ์ ์ ๋ค๊ฐ 4๊ฐ ๋ฐ์ ์ฃผ์ด์ง์ง ์์๋ ๋์๊ฐ๋๋ก(4์ง์ ๋ค) loop ๊ตฌ์กฐ๋ฅผ ๋ฐ๊พธ์๋ค. ๋ฐ์ดํฐ๋ค์ Arraylist ๋ก ์ง ๊ฒ๋ค์ ์ต๋ํ ๋ฐฐ์ด(Array)๋ก ๋ฐ๊พธ์๋ค.
๊ฐ์ฅ ์ค๋ ๊ฑธ๋ฆฐ ๋ง๋ฌด๋ฆฌ์์ ์ ํ๊ธํจ์นํ์๋ค. ๊ณ์ ์์ด๋ก ์์ ํด์ ๋ชฐ๋๋๋ฐ, ์๊ฐํด๋ณด๋ ํ์ผ ๋ด์ฉ๋ค์ด ์ฃ๋ค ํ๊ธ์ผ ๊ฒ ๊ฐ์์ ๊ธํ ํจ์น๋ฅผ ๋๋ค. ํ์ผ ๋ด์ฉ๋, ์ ๋ชฉ๋, ๋๋ ํ ๋ฆฌ ์ด๋ฆ๋ ๋ค ํ๊ธ์ ๋ฐ์ ์ ์๊ฒ ์ค์ ํ๋ ๋ฐ ๊ฝค ์ ๋จน์๋ค. ์ฝ์ด์ค๋ ๊ฑด ์ ํ๋๋ฐ ๋ค๋ฅธ ํ์๋ก ์ฝ๊ธฐ๋ ํ๊ณ , charset ๋ฐ๊พธ๊ณ ํด๋ณด๋ ์ต์ด ์ฝ์ด์ฌ ๋ ์ํ๋๋ฐ ๋ค๋ฅธ ํจ์๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋๊น ๊นจ์ง๊ณ ... ์ด๊ฒ ๋๋ฌธ์ ๋ง์ง๋ง ํจ์น์ 3-4์๊ฐ์ด ๊ฑธ๋ ธ๋ค.
๋งบ์๋ง
์ด๋ ๊ฒ ๋ง๋ค์ด์ ๊ณ ๊ฐ ์์์ ์์ฐํด๋๋ฆฌ๋๊น ๊ฒ๋ ์ข์ํ์ จ๋ค. ํ๋ฒ์ ๊ทธ๊ฑฐ ๊ณ ๋ง๋ค๊ณ ๋นต๋ ์ฌ์ฃผ๊ณ ์ด์ฝ๋ฆฟ๋ ๋ฐ๋ ํ์ธ๋ฐ์ด๋ผ๊ณ ์ฌ๋ค์ฃผ์ จ๋ค.
์ฌ๋ด์ผ๋ก, ์ฌ์ค ์ถ๋ ฅ๋๋ ํ์ผ์ .pdf ๋ก ํ๊ณ ์ถ์ด์ ์ด์ฌํ pdf ํ์ผ ๋ด๋ถ๊ตฌ์กฐ๋ ๊ณต๋ถํ๊ณ ์ด์ฌํ ๋ง๋ค์ด๋ณด๊ธฐ๋ ํ๋๋ฐ, ๋ญ๊ฐ ๊น๋ํ๊ฒ ์ด์๊ฒ ๋ง๋๋ ค๋ฉด ๋๋ฌด ๋ง์ ๊ฒ์ ์์์ผ ํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์๋ฒ๋ ธ๋ค. ๊ทธ๋์ java api ๋ง๋ค์ด์ง ๊ฒ์ ์ฐพ์๋ดค๋๋ฐ, ํ๋ฒ๋ ๋ค๋ฅธ ์ฌ๋ ๊ฒ์ import ํด์ ์ด ์ ์ด ์์ด์ ์ฐ์ง๋ ๋ชปํ๋ค. ์ด๊ฒ๋ ๋ฐฐ์๋ด์ผ๊ฒ ๋ค.
์ด๋ฒ ํ๋ก์ ํธ๋ก jar ํ์ผ๋ ์ฒ์ ๋ง๋ค์ด๋ณด๊ณ , ๋ฐฐํฌ๋ ์ฒ์ ํด๋ณด์๋ค. exception handling ๊ณผ version control, efficiency ํฅ์๋ ์ ๊ฒฝ์จ๋ณด์๋ค.
์ด๊ฒ์ ๊ณ๊ธฐ๋ก,java์ ๋ค๋ฅธ ์ค๋ฌด์ ์ฌ์ฉ์ ๋ฐฐ์๋ณด๊ณ ์ถ์ ๋ง์์ด ์๊ฒผ๋ค. ์์ด๋ก ๋น๊ตํ์๋ฉด, ์์กด์์ด๋ ํ ์ค ์์์ง๋ง ์จ๋จน์ง๋ฅผ ์์๋ ๋ด๊ฐ ์ฒ์์ผ๋ก ๋จํธ ์ด์ผ๊ธฐ๋ฅผ ์ด ์ ์ด๋ค. ์ด์ ๋ ธ๋ ๊ฐ์ฌ๋ ์จ๋ณด๊ณ , ์๋ ์จ๋ณด๊ณ , ์์ค๋ ์จ๋ณด๊ณ , ๊ธฐ์ฌ๋ ์จ๋ณด๊ณ ์ฌ๋ฌ๊ฐ์ง๋ก ํด๋ณด๊ณ ์ถ๋ค.
Comments
์ฒซ ๋๊ธ์ ๋จ๊ฒจ๋ณด์ธ์!