CodeGym /Java Course /All lectures for KO purposes /์ฝ”๋“œ ํ’ˆ์งˆ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•

์ฝ”๋“œ ํ’ˆ์งˆ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•

All lectures for KO purposes
๋ ˆ๋ฒจ 1 , ๋ ˆ์Šจ 184
์‚ฌ์šฉ ๊ฐ€๋Šฅ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ๋งค๋…„ ์‹ค์ œ ์ฝ”๋”ฉ ๊ฒฝํ—˜์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ ์ฃผ๋‹ˆ์–ด ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ์™€ ๊ฒฝํ—˜์ด ๋งŽ์€ ๊ฐœ๋ฐœ์ž์˜ ์ฝ”๋“œ๋ฅผ ๊ตฌ๋ณ„ํ•˜๋Š” ๊ฒƒ์€ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋ช‡ ๋…„์˜ ์ „๋ฌธ์ ์ธ ๊ฒฝํ—˜์„ ๊ฐ€์ง„ ๋งŽ์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๋ถˆ๊ณผ 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๋ฅผ ๋ฐฐ์šฐ๊ณ  ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋ถ„์•ผ์— ์ทจ์—…ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ๋ถ€ํ„ฐ ์ฝ”๋“œ์˜ ํ’ˆ์งˆ์„ ์—ผ๋‘์— ๋‘๋„๋ก ํ•™์Šต์ž๋ฅผ ๊ฐ€๋ฅด์นฉ๋‹ˆ๋‹ค.

์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION