ํ๋ก๊ทธ๋๋ฐ์์๋ ๋งค๋ ์ค์ ์ฝ๋ฉ ๊ฒฝํ์ด ์ค์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ์ ์ผ๋ก ์ฃผ๋์ด ํ๋ก๊ทธ๋๋จธ๊ฐ ์์ฑํ ์ฝ๋์ ๊ฒฝํ์ด ๋ง์ ๊ฐ๋ฐ์์ ์ฝ๋๋ฅผ ๊ตฌ๋ณํ๋ ๊ฒ์ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค. ์ค์ ๋ก ๋ช ๋ ์ ์ ๋ฌธ์ ์ธ ๊ฒฝํ์ ๊ฐ์ง ๋ง์ ํ๋ก๊ทธ๋๋จธ๋ ๋ถ๊ณผ 1๋ ์ ์ ์์ฑํ ์ฝ๋๋ฅผ ๋ณด๋ฉด ์ฝ๊ฐ ๋ถ๋๋ฌ์ํ ๊ฒ์ ๋๋ค.
ํ์ง์ด ์ข์ง ์์ ์ฝ๋๋ ๊ทํ๋ฟ๋ง ์๋๋ผ ๋๋จธ์ง ๊ฐ๋ฐ ํ๊ณผ ํ๋ก์ ํธ ์ ์ฒด์ ์ํฅ์ ๋ฏธ์น๋ ์ค์ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค. ๋คํ์ค๋ฝ๊ฒ๋ ์๊ฐ๊ณผ ๊ฒฝํ์ ํตํด ํํ์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ์ฝ๋์ ํ์ง์ด ํฅ์๋ ๊ฒ์ ๋๋ค.ํ์ง๋ง ์๋ฒฝํจ์ ์ ์ ๋ก ์ค๋ ๊ฒ์ด ์๋๋ผ ์ถ๊ตฌํด์ผ ํฉ๋๋ค. ๋ค์์ ์ฝ๋ฉ ์คํ์ผ์ ๊ฐ์ ํ๊ธฐ ์ํ ๋ช ๊ฐ์ง ๊ถ์ฅ ์ฌํญ์ ๋๋ค.
1. ์ด๋ก ์ ๋ฐฐ์ฐ๊ณ ์ฝ๋ฉ ์คํ์ผ ๊ฐ์ ์ ๊ดํ ์ฑ ์ฝ๊ธฐ
์ฝ๋๋ฅผ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ฑ ๋ฐ ๊ธฐํ ์๋ฃ๋ฅผ ์ฝ๋ ๊ฒ์ด ํญ์ ๊ถ์ฅ๋ฉ๋๋ค. Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin์ ์ฝ๋ฉ ์คํ์ผ์ ๊ดํ ๊ฐ์ฅ ์ ๋ช ํ ์ฑ ์ค ํ๋์ ๋๋ค. ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ์์๊ฒ ์ ๊ทน ์ถ์ฒํฉ๋๋ค. ์ฌ๊ธฐ์์ ์ ์๋ ์ข์ ์ฝ๋์ ๋์ ์ฝ๋์ ์ฃผ์ ์ฐจ์ด์ ์ ๋ณด์ฌ์ฃผ๊ณ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ฌ์ฉํ์ฌ ๊นจ๋ํ๊ณ ์ฝ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ ์ฃผ์ ๊ท์น์ ์ค๋ช ํฉ๋๋ค. ์ฝ์ ์ ์๋ ๋ค๋ฅธ ์ฌ๋ฌ ์ฑ ์ด ์์ต๋๋ค.
- Andrew Hunt์ David Thomas์ ์ค์ฉ ํ๋ก๊ทธ๋๋จธ,
- Robert Sedgewick & Kevin Wayne์ ์๊ณ ๋ฆฌ์ฆ,
- Narsimha Karumanchi์ ์์ฌ์ด ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ฐ ์๊ณ ๋ฆฌ์ฆ.
2. ์ฝ๋ฉ ๊ท์น์ ๋ํด ๋ฐฐ์ฐ๊ณ ์ด๋ฅผ ๋ฐ๋ฅด์ญ์์ค.
์ฝ๋ฉ ๊ท์น์ ์ฝ๋ฉ ์คํ์ผ, ๋ชจ๋ฒ ์ฌ๋ก ๋ฐ ๋ฐฉ๋ฒ์ ํฌํจํ์ฌ ์ด ์ธ์ด๋ก ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๋ค์ํ ์ธก๋ฉด์ ๋ํ ๊ถ์ฅ ์ฌํญ์ด ํฌํจ๋ ๊ฐ ํน์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ํ ์ง์นจ ์ธํธ์ ๋๋ค. ์ฝ๋ฉ ๊ท์น์ ์ฝ๋๋ฅผ ์ฝ์ ์ ์๊ณ ๋ค๋ฅธ ์ฌ๋์ด ์ํํธ์จ์ด๋ฅผ ์ ์ ํ๊ฒ ์ ์ง ๊ด๋ฆฌํ ์ ์๋๋ก ํ์ง ๊ฐ์ด๋๋ก ์ด ์ธ์ด๋ก ์ฝ๋ฉํ๋ ์ํํธ์จ์ด ํ๋ก๊ทธ๋๋จธ๊ฐ ์ค์ํด์ผ ํฉ๋๋ค.
์ฝ๋ฉ ๊ท์น์ ์ผ๋ฐ์ ์ผ๋ก ์ด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์ํํธ์จ์ด๋ฅผ ๋ง๋๋ ๋ฐ ํ์ํ ๋ชจ๋ ํ์ ๊ตฌ์ฑ ์์๋ฅผ ๋ค๋ฃน๋๋ค. ์ฌ๊ธฐ์์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ Java ์ฝ๋ฉ ๊ท์น์ ๋ํด ์์ธํ ์์๋ณผ ์ ์์ต๋๋ค.
3. ์ ์ ์ฝ๋ ๋ถ์๊ธฐ ์ฌ์ฉ
์๋ ์ฝ๋ ๋ถ์์ ์ ๊ณตํ๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์์ฑ ์งํ ์ค๋ฅ๋ฅผ ์ฐพ์ ์ฝ๋์ ํ์ง์ ํฅ์์ํค๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ ์ ์ฝ๋ ๋ถ์๊ธฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ถ๊ฐ ํ์ง ๋ณด์ฆ ๊ณ์ธต์ ์ถ๊ฐํ๊ณ ์ฝ๋ ๊ฒํ ๋จ๊ณ ์ด์ ์ ์ฝ๋๋ฅผ ๊ฐ์ ํ ์ ์์ต๋๋ค.
๋ค์์ ์ธ๊ธฐ ์๋ Java์ฉ ์ ์ ์ฝ๋ ๋ถ์๊ธฐ์ ๋๋ค. Checkstyle, SpotBugs, PMD Java, Find Security Bugs.
4. ์ฝ๋ ๋ฆฌ๋ทฐ์ ๋ค ๊ฐ์ง ์์น์ ์ ์ฉํ๋ผ
๋ค ๋์ ์์น์ ์ฝ๋ฉ์ ์ ์ฉํ๋ค๋ ๊ฒ์ ์ฝ๋ ์์ฑ์๋ฅผ ํฌํจํด ์ต์ 2๋ช ์ด ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์ํํด์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ค๋๋ ํ ๋ฆฌํ์คํธ๋ ๊ฐ๋ฐ์๊ฐ ํ ๊ตฌ์ฑ์์๊ฒ ์์ฑ๋ ๊ธฐ๋ฅ์ ๋ํด ์๋ฆฌ๊ณ ์ ์ฝ๋๋ฅผ ๊ธฐ์กด ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ณํฉํ๊ธฐ ์ ์ ๊ฒํ ๋ฅผ ์์ฒญํ๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฉ์ปค๋์ฆ ์ค ํ๋๋ก ์ฌ์ฉ๋ฉ๋๋ค.
5. ์ง์์ ํตํฉ ์ฌ๋ก ์ ์ฉ ๋ฐ CI ๋๊ตฌ ์ฌ์ฉ
์ง์์ ํตํฉ(CI)์ ๋ชจ๋ ๊ฐ๋ฐ์์ ์์ ๋ณต์ฌ๋ณธ์ ๊ณต์ ๋ฉ์ธ๋ผ์ธ์ ํ๋ฃจ์ ์ฌ๋ฌ ๋ฒ ๋ณํฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ง์์ ์ธ ํตํฉ์ ์ ์ฉํ๋ฉด ์์๋ ๋น๋์ ๋ํ ๋น ๋ฅธ ํผ๋๋ฐฑ์ ๋ฐ๊ณ ์ฆ์ ์์ ํ ์ ์์ต๋๋ค.
์ฝ๋ ํ์ง์ ๊ฐ์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ฌ๋ฌ CI ๋๊ตฌ๊ฐ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด Jenkins๋ Java๋ก ์์ฑ๋ ์คํ ์์ค ์๋ํ ์๋ฒ๋ก, ํ๋ซํผ์ ๊ด๊ณ์์ด ๊ฐ๋ฐ์๊ฐ ์ง์์ ์ผ๋ก ํตํฉํ๊ณ ํ๋ก์ ํธ๋ฅผ ์ง์์ ์ผ๋ก ์ ๋ฌํ์ฌ ์ํํธ์จ์ด๋ฅผ ์์ ์ ์ผ๋ก ๊ตฌ์ถ, ํ ์คํธ ๋ฐ ๋ฐฐํฌํ ์ ์๋๋ก ํฉ๋๋ค.
Buddy๋ ์ ์๋ ค์ง ๋ ๋ค๋ฅธ ์ง์์ ์ธ ํตํฉ ๋ฐ ์ ๊ณต ์ํํธ์จ์ด ๋๊ตฌ์ ๋๋ค. ๋ค๋ฅธ ๋๊ตฌ์ ๋นํด CI/CD ์ฑํ ์๊ฐ์ด 87% ๋ ๋น ๋ฅด๋ค๊ณ ์ฃผ์ฅํฉ๋๋ค.
TeamCity๋ ๋ชจ๋ ์ข ๋ฅ์ ์ํฌํ๋ก ๋ฐ ๊ฐ๋ฐ ๊ดํ์ ๋ํด ์ต๊ณ ์ ์ ์ฐ์ฑ์ ์ ๊ณตํ๋ ๋ฒ์ฉ CI/CD ์๋ฃจ์ ์ ๋๋ค. ํ๋ก์ ํธ ๊ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋น๋ ์ํ๋ฅผ ์ ์ํ๊ฒ ํ์ธํ๊ณ ๋ฌด์์ด ํธ๋ฆฌ๊ฑฐํ๋์ง ํ์ธํ๊ณ ์ต์ ๋น๋ ์ํฐํฉํธ๋ฅผ ๋ค์ด๋ก๋ํ๋ ๋ฑ์ ์์ ์ ์ํํ ์ ์์ต๋๋ค.
6. ๋๋ฒ๊น ๋๊ตฌ ์ฌ์ฉ
๋๋ฒ๊น ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋ ํ์ง์ ํฌ๊ฒ ๋์ผ ์ ์์ผ๋ฏ๋ก ์ ๊ทน ๊ถ์ฅํฉ๋๋ค. Java ๊ฐ๋ฐ๊ณผ ๊ด๋ จํ์ฌ IntelliJ IDEA, Eclipse ๋ฐ NetBeans์ ๊ฐ์ ๋ชจ๋ ์ฃผ์ IDE์๋ ๋ด์ฅํ ๋๋ ํ๋ฌ๊ทธ์ธ ํํ์ ๋๋ฒ๊น ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
7. CodeGym์ ์ฌ์ฉํ์ฌ Java์์ ์ต๊ณ ์ ์ฝ๋ฉ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๊ณ ์ฐ์ตํ์ญ์์ค.
CodeGym์์ Java๋ฅผ ๋ฐฐ์ฐ๊ณ CG๋ฅผ ํ๋ซํผ์ผ๋ก ์ฌ์ฉํ์ฌ ์ฝ๋ฉ ๊ธฐ์ ์ ์ฐ์ตํ๋ ๊ฒ๋ ์ฝ๋ฉ ์คํ์ผ์ ๊ฐ์ ํ๋ ๋ฐ ํจ๊ณผ์ ์์ด ์ ์ฆ๋์์ต๋๋ค. CodeGym ๊ณผ์ ์ ๊ฒฝํ์ด ์๋ ์ด๋ณด์๊ฐ Java๋ฅผ ๋ฐฐ์ฐ๊ณ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ถ์ผ์ ์ทจ์ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ค๊ณ๋์๊ธฐ ๋๋ฌธ์ ์ฒ์๋ถํฐ ์ฝ๋์ ํ์ง์ ์ผ๋์ ๋๋๋ก ํ์ต์๋ฅผ ๊ฐ๋ฅด์นฉ๋๋ค.
GO TO FULL VERSION