๋ฒ„๊ทธ๋ฅผ ์ฐพ๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ํ”„๋กœ์„ธ์Šค์— ์ •์  ๋ถ„์„์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์ ์  ๋” ์ฃผ๋ชฉ์„ ๋ฐ›๊ณ  ์žˆ๋Š” ์ •์  ๋ถ„์„์— ๊ด€ํ•œ ์ˆ˜๋งŽ์€ ์ž๋ฃŒ๋ฅผ ๋ณด๊ณ  ์ด ๊ธ€์„ ์“ฐ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฒซ์งธ๋กœ, ์ด PVS ์ŠคํŠœ๋””์˜ค ๋ธ”๋กœ๊ทธ, ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์—์„œ ๋„๊ตฌ์—์„œ ๋ฐœ๊ฒฌํ•œ ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ๊ฒ€ํ† ๋ฅผ ํ†ตํ•ด Habrรฉ์—์„œ ์ ๊ทน์ ์œผ๋กœ ํ™๋ณดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ PVS-studio ๊ตฌํ˜„ ์ž๋ฐ” ์ง€์›, ๊ทธ๋ฆฌ๊ณ  ๋ฌผ๋ก  ํ˜„์žฌ Java์šฉ์œผ๋กœ ๊ฐ€์žฅ ๋ฐœ์ „๋œ ๋ถ„์„๊ธฐ๊ฐ€ ๋‚ด์žฅ๋œ IntelliJ IDEA์˜ ๊ฐœ๋ฐœ์ž๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๋ฉ€๋ฆฌ ์žˆ์„ ์ˆ˜ ์—†์—ˆ์–ด.

์ด๋Ÿฌํ•œ ๋ฆฌ๋ทฐ๋ฅผ ์ฝ์œผ๋ฉด ๋งˆ๋ฒ•์˜ ๋น„์•ฝ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๋Š๋‚Œ์„ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์—ฌ๊ธฐ์— ๊ฒฐํ•จ ๋ชฉ๋ก์ด ๋ˆˆ์•ž์— ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๋ถ„์„๊ธฐ๊ฐ€ ํ–ฅ์ƒ๋จ์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ๋” ๋งŽ์€ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ๊ฒฌ๋  ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ, ์ด๋Ÿฌํ•œ ๋กœ๋ด‡์ด ์Šค์บ”ํ•˜๋Š” ์ œํ’ˆ์€ ์šฐ๋ฆฌ ์ธก์˜ ๋…ธ๋ ฅ ์—†์ด๋„ ์ ์  ๋” ์ข‹์•„์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋งˆ๋ฒ•์˜ ๋น„์•ฝ์€ ์—†์Šต๋‹ˆ๋‹ค. ์ €๋Š” "์—ฌ๊ธฐ์— ์šฐ๋ฆฌ ๋กœ๋ด‡์ด ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค"์™€ ๊ฐ™์€ ๊ฒŒ์‹œ๋ฌผ์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์ด์•ผ๊ธฐ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ถ„์„๊ธฐ๊ฐ€ ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€, ์†Œํ”„ํŠธ์›จ์–ด ์ œ๊ณต ํ”„๋กœ์„ธ์Šค์—์„œ ๋ถ„์„๊ธฐ๊ฐ€ ์‹ค์ œ ์—ญํ• ๊ณผ ์œ„์น˜๋Š” ๋ฌด์—‡์ธ์ง€, ์ด๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? .

๋ฒ„๊ทธ๋ฅผ ์ฐพ๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ํ”„๋กœ์„ธ์Šค์— ์ •์  ๋ถ„์„์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
๋ž˜์นซ(์ถœ์ฒ˜: ์œ„ํ‚คํ”ผ๋””์•„).

์ •์  ๋ถ„์„๊ธฐ๊ฐ€ ์ ˆ๋Œ€ ํ•  ์ˆ˜ ์—†๋Š” ์ผ

์‹ค์šฉ์ ์ธ ๊ด€์ ์—์„œ ์†Œ์Šค ์ฝ”๋“œ ๋ถ„์„์ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ์ผ๋ถ€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅ ๋ฐ ์ถœ๋ ฅ์œผ๋กœ ์ œ๊ณตํ•˜๋ฉฐ ์งง์€ ์‹œ๊ฐ„(ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ์งง์Œ)์— ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ผ๋ถ€ ์ •๋ณด๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. ๊ทผ๋ณธ์ ์ด๊ณ  ์ˆ˜ํ•™์ ์œผ๋กœ ๊ทน๋ณตํ•  ์ˆ˜ ์—†๋Š” ํ•œ๊ณ„๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ์ƒ๋‹นํžˆ ์ข์€ ์ข…๋ฅ˜์˜ ์ •๋ณด๋งŒ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ •์  ๋ถ„์„์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ์˜ ๊ฐ€์žฅ ์œ ๋ช…ํ•œ ์˜ˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ข…๋ฃŒ ๋ฌธ์ œ: ์ด๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์†Œ์Šค ์ฝ”๋“œ์—์„œ ์œ ํ•œํ•œ ์‹œ๊ฐ„ ๋‚ด์— ๋ฐ˜๋ณต๋  ๊ฒƒ์ธ์ง€ ์ข…๋ฃŒ๋  ๊ฒƒ์ธ์ง€๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•จ์„ ์ฆ๋ช…ํ•˜๋Š” ์ •๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ด ์ •๋ฆฌ์˜ ํ™•์žฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ผ์ด์Šค์˜ ์ •๋ฆฌ, ์ด๋Š” ๊ณ„์‚ฐ ๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜์˜ ์‚ฌ์†Œํ•˜์ง€ ์•Š์€ ์†์„ฑ์— ๋Œ€ํ•ด ์ž„์˜์˜ ํ”„๋กœ๊ทธ๋žจ์ด ๊ทธ๋Ÿฌํ•œ ์†์„ฑ์„ ๊ฐ€์ง„ ํ•จ์ˆ˜๋ฅผ ํ‰๊ฐ€ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ ์œผ๋กœ ๋‹ค๋ฃจ๊ธฐ ํž˜๋“  ๋ฌธ์ œ์ž„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ถ„์„ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์ด ์ •์ˆ˜์˜ ์ œ๊ณฑ์„ ๊ณ„์‚ฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ตฌํ˜„์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ์†Œ์Šค ์ฝ”๋“œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ„์„๊ธฐ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ •์  ๋ถ„์„๊ธฐ์˜ ๊ธฐ๋Šฅ์—๋Š” ๊ทน๋ณตํ•  ์ˆ˜ ์—†๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •์  ๋ถ„์„๊ธฐ๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด null ๊ฐ’์„ ํ—ˆ์šฉํ•˜๋Š” ์–ธ์–ด์—์„œ "๋„ ํฌ์ธํ„ฐ ์˜ˆ์™ธ"์˜ ๋ฐœ์ƒ์ด๋‚˜ ๋ชจ๋“  ๊ฒฝ์šฐ์— " ๋™์  ์œ ํ˜• ์–ธ์–ด์—์„œ๋Š” ์†์„ฑ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค." ๊ฐ€์žฅ ๋ฐœ์ „๋œ ์ •์  ๋ถ„์„๊ธฐ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์€ ํŠน์ˆ˜ํ•œ ์‚ฌ๋ก€๋ฅผ ๊ฐ•์กฐํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ฌธ์ œ ์ค‘์—์„œ ๊ทธ ์ˆ˜๋Š” ๊ณผ์žฅ ์—†์ด ๊ทน์†Œ์ˆ˜์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค.

์ •์  ๋ถ„์„์€ ๋ฒ„๊ทธ๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค

์œ„์—์„œ ๊ฒฐ๋ก ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ •์  ๋ถ„์„์€ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฐํ•จ ์ˆ˜๋ฅผ ์ค„์ด๋Š” ์ˆ˜๋‹จ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ฐํžˆ ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค: ํ”„๋กœ์ ํŠธ์— ์ฒ˜์Œ์œผ๋กœ ์ ์šฉํ•˜๋ฉด ์ฝ”๋“œ์—์„œ "ํฅ๋ฏธ๋กœ์šด" ์œ„์น˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„ ํ”„๋กœ๊ทธ๋žจ ํ’ˆ์งˆ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒฐํ•จ์€ ์ฐพ์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ถ„์„๊ธฐ๊ฐ€ ์ž๋™์œผ๋กœ ๋ฐœ๊ฒฌํ•œ ๊ฒฐํ•จ์˜ ์˜ˆ๋Š” ์ธ์ƒ์ ์ด์ง€๋งŒ ์ด๋Ÿฌํ•œ ์˜ˆ๋Š” ๋Œ€๊ทœ๋ชจ ์ฝ”๋“œ๋ฒ ์ด์Šค ์„ธํŠธ๋ฅผ ์Šค์บ”ํ•˜์—ฌ ๋ฐœ๊ฒฌ๋˜์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์žŠ์ง€ ๋ง์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ์›์น™์— ๋”ฐ๋ผ ๋‹ค์ˆ˜์˜ ๊ณ„์ •์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ฐ„๋‹จํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์‹œ๋„ํ•  ๊ธฐํšŒ๊ฐ€ ์žˆ๋Š” ํ•ด์ปค๋Š” ๊ฒฐ๊ตญ ๊ฐ„๋‹จํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์žˆ๋Š” ๊ณ„์ •์„ ์ฐพ์•„๋ƒ…๋‹ˆ๋‹ค.

์ด๋Š” ์ •์  ๋ถ„์„์„ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋œ๋‹ค๋Š” ๋œป์ธ๊ฐ€์š”? ๋‹น์—ฐํžˆ ์•„๋‹ˆ์ง€! ๊ทธ๋ฆฌ๊ณ  ๊ฐ๊ฐ์˜ ์ƒˆ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•˜์—ฌ ํ•ด๋‹น ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ "๊ฐ„๋‹จํ•œ" ๋น„๋ฐ€๋ฒˆํ˜ธ ์ค‘์ง€ ๋ชฉ๋ก์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ๊ณผ ๋˜‘๊ฐ™์€ ์ด์œ ์ž…๋‹ˆ๋‹ค.

์ •์  ๋ถ„์„์€ ๋ฒ„๊ทธ๋ฅผ ์ฐพ๋Š” ๊ฒƒ ์ด์ƒ์ž…๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ๋ถ„์„์„ ํ†ตํ•ด ์‹ค์งˆ์ ์œผ๋กœ ํ•ด๊ฒฐ๋˜๋Š” ๋ฌธ์ œ๋Š” ํ›จ์”ฌ ๋” ๊ด‘๋ฒ”์œ„ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ, ์ผ๋ฐ˜์ ์œผ๋กœ ์ •์  ๋ถ„์„์€ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์ถœ์‹œ๋˜๊ธฐ ์ „์— ์ˆ˜ํ–‰๋˜๋Š” ๋ชจ๋“  ๊ฒ€์ฆ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ฐ€์žฅ ๋„“์€ ์˜๋ฏธ์—์„œ ์ฝ”๋”ฉ ์Šคํƒ€์ผ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์„œ์‹ ํ™•์ธ, ๋นˆ/์ถ”๊ฐ€ ๊ด„ํ˜ธ ์‚ฌ์šฉ ์ฐพ๊ธฐ, ์ค„ ์ˆ˜/๋ฉ”์„œ๋“œ์˜ ์ˆœํ™˜์  ๋ณต์žก์„ฑ๊ณผ ๊ฐ™์€ ์ธก์ •ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์ž„๊ณ„๊ฐ’ ์„ค์ • ๋“ฑ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€ ๊ด€๋ฆฌ์„ฑ์„ ์ž ์žฌ์ ์œผ๋กœ ๋ฐฉํ•ดํ•˜๋Š” ๋ชจ๋“  ์ž‘์—…์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. Java์—์„œ ์ด๋Ÿฌํ•œ ๋„๊ตฌ๋Š” Python์˜ Checkstyle - flake8์ž…๋‹ˆ๋‹ค. ์ด ํด๋ž˜์Šค์˜ ํ”„๋กœ๊ทธ๋žจ์„ ์ผ๋ฐ˜์ ์œผ๋กœ "๋ฆฐํ„ฐ"๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋งŒ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. JSON, YAML, XML, .properties์™€ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ์€ ์ž๋™์œผ๋กœ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ, ํ…Œ์ŠคํŠธ ์‹คํ–‰์ด๋‚˜ ์‹คํ–‰ ์‹œ๊ฐ„๋ณด๋‹ค ์ž๋™ Pull Request ๊ฒ€์ฆ์˜ ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ํŽ˜์–ด๋ง๋˜์ง€ ์•Š์€ ์ผ๋ถ€ ์ธ์šฉ๋ฌธ์œผ๋กœ ์ธํ•ด JSON ๊ตฌ์กฐ๊ฐ€ ์†์ƒ๋˜์—ˆ์Œ์„ ์•Œ์•„๋‚ด๋Š” ๊ฒƒ์ด ๋” ๋‚ซ์Šต๋‹ˆ๊นŒ? ์ ์ ˆํ•œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. YAML๋ฆฐํŠธ, JSONLint.
  • ์ปดํŒŒ์ผ(๋˜๋Š” ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ตฌ๋ฌธ ๋ถ„์„)๋„ ์ •์  ๋ถ„์„์˜ ํ•œ ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์†Œ์Šค ์ฝ”๋“œ ํ’ˆ์งˆ ๋ฌธ์ œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒฝ๊ณ ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฌด์‹œํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
  • ๋•Œ๋•Œ๋กœ ์ปดํŒŒ์ผ์€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜๋Š” ๊ฒƒ ์ด์ƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ ํ˜•์‹์˜ ๋ฌธ์„œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ Ascii์˜์‚ฌ, HTML/PDF๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ˆœ๊ฐ„ AsciiDoctor ํ•ธ๋“ค๋Ÿฌ(Maven ํ”Œ๋Ÿฌ๊ทธ์ธ)๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด ๊นจ์ง„ ๋‚ด๋ถ€ ๋งํฌ์— ๋Œ€ํ•œ ๊ฒฝ๊ณ ๋ฅผ ๋ฐœํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Š” ๋ฌธ์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํฌํ•จ๋œ Pull Request๋ฅผ ์ˆ˜๋ฝํ•˜์ง€ ์•Š๋Š” ์ข‹์€ ์ด์œ ์ž…๋‹ˆ๋‹ค.
  • ๋งž์ถค๋ฒ• ๊ฒ€์‚ฌ๋„ ์ •์  ๋ถ„์„์˜ ํ•œ ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ๊ณต์ต์‚ฌ์—… ์ฃผ๋ฌธ ๋ฌธ์„œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ C/C++, Java ๋ฐ Python์„ ํฌํ•จํ•œ ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ํ”„๋กœ๊ทธ๋žจ ์†Œ์Šค ์ฝ”๋“œ(์ฃผ์„ ๋ฐ ๋ฆฌํ„ฐ๋Ÿด)์—์„œ๋„ ์ฒ ์ž๋ฅผ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋‚˜ ๋ฌธ์„œ์˜ ์ฒ ์ž ์˜ค๋ฅ˜๋„ ๊ฒฐํ•จ์ž…๋‹ˆ๋‹ค!
  • ๊ตฌ์„ฑ ํ…Œ์ŠคํŠธ(๊ทธ ๋‚ด์šฉ์— ๋Œ€ํ•ด - ์ฐธ์กฐ) ์ด ะธ ์ด ๋ณด๊ณ ์„œ)๋Š” pytest์™€ ๊ฐ™์€ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋Ÿฐํƒ€์ž„์—์„œ ์‹คํ–‰๋˜๊ธฐ๋Š” ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์‹คํ–‰ ์ค‘์— ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ผ์ข…์˜ ์ •์  ๋ถ„์„์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

๋ณด์‹œ๋‹ค์‹œํ”ผ, ์ด ๋ชฉ๋ก์—์„œ ๋ฒ„๊ทธ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€์žฅ ๋œ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•˜๋ฉฐ, ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์€ ๋ฌด๋ฃŒ ์˜คํ”ˆ ์†Œ์Šค ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์ค‘ ํ”„๋กœ์ ํŠธ์— ์–ด๋–ค ์œ ํ˜•์˜ ์ •์  ๋ถ„์„์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋ฌผ๋ก , ๋งŽ์„์ˆ˜๋ก ์ข‹์Šต๋‹ˆ๋‹ค! ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ด๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด์„œ๋Š” ๋‚˜์ค‘์— ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‹ค๋‹จ๊ณ„ ํ•„ํ„ฐ๋กœ์„œ์˜ ์ „๋‹ฌ ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์ธ ์ •์  ๋ถ„์„

์ง€์†์ ์ธ ํ†ตํ•ฉ์— ๋Œ€ํ•œ ๊ณ ์ „์ ์ธ ๋น„์œ ๋Š” ์†Œ์Šค ์ฝ”๋“œ ๋ณ€๊ฒฝ๋ถ€ํ„ฐ ์ „๋‹ฌ, ํ”„๋กœ๋•์…˜๊นŒ์ง€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํ๋ฅด๋Š” ํŒŒ์ดํ”„๋ผ์ธ์ž…๋‹ˆ๋‹ค. ์ด ํŒŒ์ดํ”„๋ผ์ธ์˜ ํ‘œ์ค€ ๋‹จ๊ณ„ ์ˆœ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์ •์  ๋ถ„์„
  2. ํŽธ์ง‘
  3. ๋‹จ์œ„ ํ…Œ์ŠคํŠธ
  4. ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ
  5. UI ํ…Œ์ŠคํŠธ
  6. ์ˆ˜๋™ ํ™•์ธ

ํŒŒ์ดํ”„๋ผ์ธ์˜ N๋ฒˆ์งธ ๋‹จ๊ณ„์—์„œ ๊ฑฐ๋ถ€๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ N+1 ๋‹จ๊ณ„๋กœ ์ „์†ก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์™œ ์ •ํ™•ํžˆ ์ด๋Ÿฐ ์‹์ด๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์€ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ํŒŒ์ดํ”„๋ผ์ธ์˜ ํ…Œ์ŠคํŠธ ๋ถ€๋ถ„์—์„œ ํ…Œ์Šคํ„ฐ๋Š” ์ž˜ ์•Œ๋ ค์ง„ ํ…Œ์ŠคํŠธ ํ”ผ๋ผ๋ฏธ๋“œ๋ฅผ ์ธ์‹ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋ฒ„๊ทธ๋ฅผ ์ฐพ๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ํ”„๋กœ์„ธ์Šค์— ์ •์  ๋ถ„์„์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
ํ…Œ์ŠคํŠธ ํ”ผ๋ผ๋ฏธ๋“œ. ์›์ฒœ: ๊ธฐ์‚ฌ ๋งˆํ‹ด ํŒŒ์šธ๋Ÿฌ.

์ด ํ”ผ๋ผ๋ฏธ๋“œ์˜ ๋งจ ์•„๋ž˜์—๋Š” ์ž‘์„ฑํ•˜๊ธฐ ์‰ฝ๊ณ  ์‹คํ–‰ ์†๋„๊ฐ€ ๋น ๋ฅด๋ฉฐ ์‹คํŒจํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์—†๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋” ๋งŽ์€ ์ฝ”๋“œ๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ๋” ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜๊ณ  ๋จผ์ € ์‹คํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ”ผ๋ผ๋ฏธ๋“œ์˜ ๊ผญ๋Œ€๊ธฐ์—๋Š” ๊ทธ ๋ฐ˜๋Œ€๊ฐ€ ์„ฑ๋ฆฝํ•˜๋ฏ€๋กœ ํ†ตํ•ฉ ๋ฐ UI ํ…Œ์ŠคํŠธ ํšŸ์ˆ˜๋ฅผ ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์œผ๋กœ ์ค„์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฒด์ธ์— ์žˆ๋Š” ์‚ฌ๋žŒ์€ ๊ฐ€์žฅ ๋น„์‹ธ๊ณ  ๋Š๋ฆฌ๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๋ฆฌ์†Œ์Šค์ด๋ฏ€๋กœ ๋งจ ๋์— ์žˆ์œผ๋ฉฐ ์ด์ „ ๋‹จ๊ณ„์—์„œ ๊ฒฐํ•จ์ด ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋งŒ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ…Œ์ŠคํŠธ์™€ ์ง์ ‘์ ์ธ ๊ด€๋ จ์ด ์—†๋Š” ๋ถ€๋ถ„์—์„œ๋„ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ์—๋Š” ๋™์ผํ•œ ์›์น™์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค!

๋‚˜๋Š” ๋‹ค๋‹จ๊ณ„ ๋ฌผ ์—ฌ๊ณผ ์‹œ์Šคํ…œ์˜ ํ˜•ํƒœ๋กœ ๋น„์œ ๋ฅผ ์ œ์‹œํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋”๋Ÿฌ์šด ๋ฌผ(๊ฒฐํ•จ์ด ์žˆ๋Š” ๋ณ€ํ™”)์ด ์ž…๋ ฅ์œผ๋กœ ๊ณต๊ธ‰๋˜๊ณ , ์ถœ๋ ฅ์—์„œ๋Š” ์›์น˜ ์•Š๋Š” ์˜ค์—ผ ๋ฌผ์งˆ์ด ๋ชจ๋‘ ์ œ๊ฑฐ๋œ ๊นจ๋—ํ•œ ๋ฌผ์„ ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„๊ทธ๋ฅผ ์ฐพ๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ํ”„๋กœ์„ธ์Šค์— ์ •์  ๋ถ„์„์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
๋‹ค๋‹จ๊ณ„ ํ•„ํ„ฐ. ์›์ฒœ: ์œ„ํ‚ค ๋ฏธ๋””์–ด ๊ณต์šฉ

์•„์‹œ๋‹ค์‹œํ”ผ, ์ฒญ์†Œ ํ•„ํ„ฐ๋Š” ์ดํ›„์˜ ๊ฐ ๋‹จ๊ณ„์—์„œ ์ ์  ๋” ๋ฏธ์„ธํ•œ ์˜ค์—ผ ๋ฌผ์งˆ์„ ๊ฑธ๋Ÿฌ๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์—, ๋” ๊ฑฐ์นœ ์ •ํ™” ๋‹จ๊ณ„๋Š” ๋” ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰๊ณผ ๋” ๋‚ฎ์€ ๋น„์šฉ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๋น„์œ ์—์„œ ์ด๊ฒƒ์€ ์ž…๋ ฅ ํ’ˆ์งˆ ๊ฒŒ์ดํŠธ๊ฐ€ ๋” ๋น ๋ฅด๊ณ , ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ๋” ์ ์€ ๋…ธ๋ ฅ์ด ํ•„์š”ํ•˜๋ฉฐ, ์ž‘๋™ ์‹œ ๋” ์†Œ๋ฐ•ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ฒŒ์ดํŠธ๊ฐ€ ๊ตฌ์ถ•๋˜๋Š” ์ˆœ์„œ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ง€๊ธˆ ์ดํ•ดํ•˜๊ณ  ์žˆ๋“ฏ์ด ๊ฐ€์žฅ ์‹ฌ๊ฐํ•œ ๊ฒฐํ•จ๋งŒ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ์ •์  ๋ถ„์„์˜ ์—ญํ• ์€ ํ•„ํ„ฐ ์บ์Šค์ผ€์ด๋“œ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์žˆ๋Š” "๋จธ๋“œ" ๊ทธ๋ฆฌ๋“œ์˜ ์—ญํ• ์ž…๋‹ˆ๋‹ค.

"๋จธ๋“œ ํ•„ํ„ฐ"๊ฐ€ ๋ฌผ์„ ๋งˆ์‹ค ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ •์  ๋ถ„์„ ์ž์ฒด๋กœ๋Š” ์ตœ์ข… ์ œํ’ˆ์˜ ํ’ˆ์งˆ์ด ํ–ฅ์ƒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํŒŒ์ดํ”„๋ผ์ธ์˜ ๋‹ค๋ฅธ ์š”์†Œ์™€ ํ•จ๊ป˜ ๊ทธ ์ค‘์š”์„ฑ์€ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋‹จ๊ณ„ ํ•„ํ„ฐ์—์„œ ์ถœ๋ ฅ ๋‹จ๊ณ„๋Š” ์ž ์žฌ์ ์œผ๋กœ ์ž…๋ ฅ ๋‹จ๊ณ„๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์บก์ฒ˜ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ž…๋ ฅ ๋‹จ๊ณ„ ์—†์ด ๋ฏธ์„ธ ์ •์ œ ๋‹จ๊ณ„๋งŒ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋ ค๋Š” ์‹œ๋„๋กœ ์ธํ•ด ์–ด๋–ค ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ• ์ง€๋Š” ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค.

"๋จธ๋“œ ํŠธ๋žฉ"์˜ ๋ชฉ์ ์€ ํ›„์† ์บ์Šค์ผ€์ด๋“œ์—์„œ ์‹ฌ๊ฐํ•œ ๊ฒฐํ•จ์ด ๋ฐœ๊ฒฌ๋˜๋Š” ๊ฒƒ์„ ์™„ํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ตœ์†Œํ•œ ์ฝ”๋“œ ๊ฒ€ํ† ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์‚ฌ๋žŒ์€ ํ˜•์‹์ด ์ž˜๋ชป๋œ ์ฝ”๋“œ์™€ ํ™•๋ฆฝ๋œ ์ฝ”๋”ฉ ํ‘œ์ค€ ์œ„๋ฐ˜(์˜ˆ: ์ถ”๊ฐ€ ๊ด„ํ˜ธ ๋˜๋Š” ๋„ˆ๋ฌด ๊นŠ๊ฒŒ ์ค‘์ฒฉ๋œ ๋ถ„๊ธฐ)์œผ๋กœ ์ธํ•ด ์ฃผ์˜๊ฐ€ ์‚ฐ๋งŒํ•ด์ ธ์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. NPE์™€ ๊ฐ™์€ ๋ฒ„๊ทธ๋Š” ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋กœ ์žก์•„์•ผ ํ•˜์ง€๋งŒ, ํ…Œ์ŠคํŠธ ์ „์—๋„ ๋ถ„์„๊ธฐ๊ฐ€ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋ผ๊ณ  ์šฐ๋ฆฌ์—๊ฒŒ ์•Œ๋ ค์ฃผ๋ฉด ์ˆ˜์ • ์†๋„๊ฐ€ ํฌ๊ฒŒ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค.

์ด์ œ ์ •์  ๋ถ„์„์„ ๊ฐ€๋” ์‚ฌ์šฉํ•˜๋ฉด ์ œํ’ˆ ํ’ˆ์งˆ์ด ํ–ฅ์ƒ๋˜์ง€ ์•Š์œผ๋ฉฐ, ์ด ๊ฒฐํ•จ์ด ์žˆ๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ•„ํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•ด ์ง€์†์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ถ„๋ช…ํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ์ •์  ๋ถ„์„๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ œํ’ˆ์˜ ํ’ˆ์งˆ์ด ํ–ฅ์ƒ๋˜๋Š”์ง€ ์—ฌ๋ถ€์— ๋Œ€ํ•œ ์งˆ๋ฌธ์€ "๋”๋Ÿฌ์šด ์—ฐ๋ชป์—์„œ ๊ฐ€์ ธ์˜จ ๋ฌผ์„ ์†Œ์ฟ ๋ฆฌ์— ํ†ต๊ณผ์‹œํ‚ค๋ฉด ์‹์ˆ˜ ํ’ˆ์งˆ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๊นŒ?"๋ผ๊ณ  ๋ฌป๋Š” ๊ฒƒ๊ณผ ๋Œ€๋žต ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

๋ ˆ๊ฑฐ์‹œ ํ”„๋กœ์ ํŠธ๋กœ ๊ตฌํ˜„

์ค‘์š”ํ•œ ์‹ค์ œ ์งˆ๋ฌธ: "ํ’ˆ์งˆ ๊ฒŒ์ดํŠธ"๋กœ์„œ ์ง€์†์ ์ธ ํ†ตํ•ฉ ํ”„๋กœ์„ธ์Šค์— ์ •์  ๋ถ„์„์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ž๋™ ํ…Œ์ŠคํŠธ์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ๊ฒƒ์ด ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ จ์˜ ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ์œผ๋ฉฐ ๊ทธ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์‹คํŒจํ•˜๋ฉด ์–ด์…ˆ๋ธ”๋ฆฌ๊ฐ€ ํ’ˆ์งˆ ๊ฒŒ์ดํŠธ๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๊ณ  ๋ฏฟ์„ ์ถฉ๋ถ„ํ•œ ์ด์œ ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ •์  ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ฒŒ์ดํŠธ๋ฅผ ์„ค์น˜ํ•˜๋ ค๋Š” ์‹œ๋„๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ์— ๋ถ„์„ ๊ฒฝ๊ณ ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„์„œ ์™„์ „ํžˆ ๋ฌด์‹œํ•˜๊ณ  ์‹ถ์ง€ ์•Š์ง€๋งŒ ์ œํ’ˆ ๋ฐฐ์†ก์„ ์ค‘๋‹จํ•˜๋Š” ๊ฒƒ๋„ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ถ„์„๊ธฐ ๊ฒฝ๊ณ ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ฒ˜์Œ ์‚ฌ์šฉํ•  ๋•Œ ๋ถ„์„๊ธฐ๋Š” ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์—์„œ ์ˆ˜๋งŽ์€ ๊ฒฝ๊ณ ๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ, ๊ทธ ์ค‘ ๋Œ€๋ถ€๋ถ„์€ ์ œํ’ˆ์˜ ์˜ฌ๋ฐ”๋ฅธ ๊ธฐ๋Šฅ๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์ฃผ์„์„ ํ•œ ๋ฒˆ์— ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋งŽ์€ ์ˆ˜์ •์ด ํ•„์š”ํ•˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ, ์šฐ๋ฆฌ๋Š” ์ •์  ๋ถ„์„์„ ๋„์ž…ํ•˜๊ธฐ ์ „์—๋„ ์šฐ๋ฆฌ ์ œํ’ˆ์ด ์ „์ฒด์ ์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค!

๊ฒฐ๊ณผ์ ์œผ๋กœ ๋งŽ์€ ๊ฒฝ์šฐ ์ •์  ๋ถ„์„์„ ๊ฐ€๋” ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ œํ•œ๋˜๊ฑฐ๋‚˜ ๋ถ„์„๊ธฐ ๋ณด๊ณ ์„œ๊ฐ€ ์–ด์…ˆ๋ธ”๋ฆฌ ์ค‘์— ๊ฐ„๋‹จํžˆ ๋ฐœํ–‰๋˜๋Š” ์ •๋ณด ๋ชจ๋“œ์—์„œ๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ถ„์„์ด ์—†๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ด๋ฏธ ๋งŽ์€ ๊ฒฝ๊ณ ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ (์•„๋ฌด๋ฆฌ ์‹ฌ๊ฐํ•˜๋”๋ผ๋„) ๋˜ ๋‹ค๋ฅธ ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋ˆˆ์— ๋„์ง€ ์•Š๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ํ’ˆ์งˆ ๊ฒŒ์ดํŠธ๋ฅผ ๋„์ž…ํ•˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์ด ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ด ๊ฒฝ๊ณ  ์ˆ˜ ๋˜๋Š” ๊ฒฝ๊ณ  ์ˆ˜๋ฅผ ์ฝ”๋“œ ์ค„ ์ˆ˜๋กœ ๋‚˜๋ˆˆ ๊ฐ’์— ๋Œ€ํ•œ ์ œํ•œ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒŒ์ดํŠธ๋Š” ์ œํ•œ์„ ์ดˆ๊ณผํ•˜์ง€ ์•Š๋Š” ํ•œ ์ƒˆ๋กœ์šด ๊ฒฐํ•จ์ด ์žˆ๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ž์œ ๋กญ๊ฒŒ ํ†ต๊ณผํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Š” ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ํŠน์ • ์ˆœ๊ฐ„์— ์ฝ”๋“œ์˜ ๋ชจ๋“  ์˜ค๋ž˜๋œ ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์‹œํ•˜๋„๋ก ์ˆ˜์ •ํ•˜๊ณ  ์ƒˆ๋กœ์šด ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ๋นŒ๋“œ๋ฅผ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ PVS-studio ๋ฐ Codacy์™€ ๊ฐ™์€ ์ผ๋ถ€ ์˜จ๋ผ์ธ ๋ฆฌ์†Œ์Šค์—์„œ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. Codacy์— ๋Œ€ํ•œ ๋‚ด ๊ฒฝํ—˜์— ๋”ฐ๋ฅด๋ฉด PVS-studio์—์„œ ์ผํ•  ๊ธฐํšŒ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. Codacy์˜ ์ฃผ์š” ๋ฌธ์ œ๋Š” "์˜ค๋ž˜๋œ" ์˜ค๋ฅ˜์™€ "์ƒˆ๋กœ์šด" ์˜ค๋ฅ˜๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ํ•ญ์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋‹ค์†Œ ๋ณต์žกํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ํŒŒ์ผ์ด ๋งŽ์ด ์ˆ˜์ •๋˜๊ฑฐ๋‚˜ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ์—๋Š” ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๋‚ด ๊ฒฝํ—˜์— ๋”ฐ๋ฅด๋ฉด Codacy๋Š” ํ’€ ์š”์ฒญ์˜ ์ƒˆ๋กœ์šด ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์‹œํ•˜๋Š” ๋™์‹œ์— ํŠน์ • PR ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ๊ณผ ๊ด€๋ จ๋˜์ง€ ์•Š์€ ๊ฒฝ๊ณ ๋กœ ์ธํ•ด ํ’€ ์š”์ฒญ์„ ์ „๋‹ฌํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ œ ์ƒ๊ฐ์—๋Š” ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ ํ•ด๊ฒฐ์ฑ…์€ ์ฑ…์— ์„ค๋ช…๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฐ์† ๋ฐฐ๋‹ฌ "๋ž˜์นซ ๋ฐฉ์‹". ๊ธฐ๋ณธ ์•„์ด๋””์–ด๋Š” ์ •์  ๋ถ„์„ ๊ฒฝ๊ณ  ์ˆ˜๋Š” ๊ฐ ๋ฆด๋ฆฌ์Šค์˜ ์†์„ฑ์ด๋ฉฐ ์ด ๊ฒฝ๊ณ  ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ์ง€ ์•Š๋Š” ๋ณ€๊ฒฝ๋งŒ ํ—ˆ์šฉ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ž˜์นซ ํœ  ์žฅ์น˜

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ๋Š” ๋ถ„์„๊ธฐ๊ฐ€ ๋ฐœ๊ฒฌํ•œ ์ฝ”๋“œ์˜ ๊ฒฝ๊ณ  ์ˆ˜ ๊ณต๊ฐœ์— ๋Œ€ํ•œ ๊ธฐ๋ก์ด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—…์ŠคํŠธ๋ฆผ์„ ๋นŒ๋“œํ•  ๋•Œ ์ €์žฅ์†Œ ๊ด€๋ฆฌ์ž๋Š” "๋ฆด๋ฆฌ์Šค 7.0.2"๋ฟ๋งŒ ์•„๋‹ˆ๋ผ "7.0.2๊ฐœ์˜ ์ฒดํฌ์Šคํƒ€์ผ ๊ฒฝ๊ณ ๊ฐ€ ํฌํ•จ๋œ ๋ฆด๋ฆฌ์Šค 100500"๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. Artifactory์™€ ๊ฐ™์€ ๊ณ ๊ธ‰ ์ €์žฅ์†Œ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ์ด์ œ ๊ฐ ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ์€ ๋นŒ๋“œ ์‹œ ๊ฒฐ๊ณผ ๊ฒฝ๊ณ  ์ˆ˜๋ฅผ ํ˜„์žฌ ๋ฆด๋ฆฌ์Šค์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๊ณ  ์ˆ˜์™€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. PR๋กœ ์ธํ•ด ์ด ์ˆซ์ž๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด ์ฝ”๋“œ๋Š” ์ •์  ๋ถ„์„์„ ์œ„ํ•œ ํ’ˆ์งˆ ๊ฒŒ์ดํŠธ๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ๊ณ  ์ˆ˜๊ฐ€ ๊ฐ์†Œํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์œผ๋ฉด ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค.
  3. ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ๋‹ค์‹œ ๊ณ„์‚ฐ๋œ ๊ฒฝ๊ณ  ์ˆ˜๊ฐ€ ๋ฆด๋ฆฌ์Šค ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ๋‹ค์‹œ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์กฐ๊ธˆ์”ฉ์ด์ง€๋งŒ ๊พธ์ค€ํ•˜๊ฒŒ(๋ž˜์นซ์ด ์ž‘๋™ํ•  ๋•Œ์ฒ˜๋Ÿผ) ๊ฒฝ๊ณ  ํšŸ์ˆ˜๊ฐ€ XNUMX์ด ๋˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ƒˆ๋กœ์šด ๊ฒฝ๊ณ ๋ฅผ ๋„์ž…ํ•˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ๊ฒฝ๊ณ ๋ฅผ ์ˆ˜์ •ํ•จ์œผ๋กœ์จ ์‹œ์Šคํ…œ์„ ์†์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์žฅ๊ฑฐ๋ฆฌ์— ๊ฑธ์ณ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ์ •์ƒ์ ์ธ ํ˜„์ƒ์ž…๋‹ˆ๋‹ค. ๊ฒฝ๊ณ ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ˆ˜์ •๋˜์ง€ ์•Š๊ณ  ํŠน์ • ์œ ํ˜•์˜ ๊ทธ๋ฃน์—์„œ ํ•œ ๋ฒˆ์— ์ˆ˜์ •๋˜๋ฉฐ ์‰ฝ๊ฒŒ ์ œ๊ฑฐ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒฝ๊ณ ๋Š” ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.

์ด ๊ทธ๋ž˜ํ”„๋Š” XNUMX๊ฐœ์›” ๋™์•ˆ ์ด๋Ÿฌํ•œ "๋ž˜์นซ"์„ ์ž‘๋™ํ•œ ๋™์•ˆ ๋ฐœ์ƒํ•œ Checkstyle ๊ฒฝ๊ณ ์˜ ์ด ํšŸ์ˆ˜๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ ์ค‘ ํ•˜๋‚˜. ๊ฒฝ๊ณ  ํšŸ์ˆ˜๊ฐ€ ๋Œ€ํญ ๊ฐ์†Œํ–ˆ๋Š”๋ฐ, ์ด๋Š” ์ œํ’ˆ ๊ฐœ๋ฐœ๊ณผ ๋ณ‘ํ–‰ํ•˜์—ฌ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ฐœ์ƒํ•œ ํ˜„์ƒ์ž…๋‹ˆ๋‹ค!

๋ฒ„๊ทธ๋ฅผ ์ฐพ๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ํ”„๋กœ์„ธ์Šค์— ์ •์  ๋ถ„์„์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” ์ด ๋ฐฉ๋ฒ•์˜ ์ˆ˜์ •๋œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ๋ชจ๋“ˆ๊ณผ ๋ถ„์„ ๋„๊ตฌ๋ณ„๋กœ ๊ฒฝ๊ณ ๋ฅผ ๋ณ„๋„๋กœ ๊ณ„์‚ฐํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋นŒ๋“œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ YAML ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

celesta-sql:
  checkstyle: 434
  spotbugs: 45
celesta-core:
  checkstyle: 206
  spotbugs: 13
celesta-maven-plugin:
  checkstyle: 19
  spotbugs: 0
celesta-unit:
  checkstyle: 0
  spotbugs: 0

๋ชจ๋“  ๊ณ ๊ธ‰ CI ์‹œ์Šคํ…œ์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฐ ํƒ€์‚ฌ ๋„๊ตฌ์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋“  ์ •์  ๋ถ„์„ ๋„๊ตฌ์— ๋Œ€ํ•ด ๋ž˜์นซ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ถ„์„๊ธฐ๋Š” ๋ถ„์„ํ•˜๊ธฐ ์‰ฌ์šด ๊ฐ„๋‹จํ•œ ํ…์ŠคํŠธ ๋˜๋Š” XML ํ˜•์‹์œผ๋กœ ์ž์ฒด ๋ณด๊ณ ์„œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋‚จ์€ ๊ฒƒ์€ CI ์Šคํฌ๋ฆฝํŠธ์— ํ•„์š”ํ•œ ๋กœ์ง์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. Jenkins ๋ฐ Artifactory๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์—์„œ ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋˜๋Š” ์—ฌ๊ธฐ์—. ๋‘ ์˜ˆ์ œ ๋ชจ๋‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋ž˜์นซ๋ฆฝ: ๋ฐฉ๋ฒ• countWarnings() Checkstyle ๋ฐ Spotbugs๊ฐ€ ์ƒ์„ฑํ•œ ํŒŒ์ผ์˜ xml ํƒœ๊ทธ๋ฅผ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ์‹์œผ๋กœ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. compareWarningMaps() ๋™์ผํ•œ ๋ž˜์นซ์„ ๊ตฌํ˜„ํ•˜์—ฌ ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ฒฝ๊ณ  ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

aspell์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ์„, ํ…์ŠคํŠธ ๋ฆฌํ„ฐ๋Ÿด ๋ฐ ๋ฌธ์„œ์˜ ์ฒ ์ž๋ฅผ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด "๋ž˜์นซ"์˜ ํฅ๋ฏธ๋กœ์šด ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์•„์‹œ๋‹ค์‹œํ”ผ ๋งž์ถค๋ฒ• ๊ฒ€์‚ฌ๋ฅผ ํ•  ๋•Œ ํ‘œ์ค€ ์‚ฌ์ „์— ์•Œ๋ ค์ง€์ง€ ์•Š์€ ๋ชจ๋“  ๋‹จ์–ด๊ฐ€ ํ‹€๋ฆฐ ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ ์‚ฌ์šฉ์ž ์‚ฌ์ „์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์†Œ์Šค ์ฝ”๋“œ์˜ ์‚ฌ์šฉ์ž ์ •์˜ ์‚ฌ์ „ ๋ถ€๋ถ„์„ ๋งŒ๋“ค๋ฉด ์ฒ ์ž ํ’ˆ์งˆ ๊ฒŒ์ดํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณต์‹ํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: ํ‘œ์ค€ ๋ฐ ์‚ฌ์šฉ์ž ์ •์˜ ์‚ฌ์ „์„ ์‚ฌ์šฉํ•˜์—ฌ aspell์„ ์‹คํ–‰ ํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค. ์ฒ ์ž ์˜ค๋ฅ˜๋ฅผ ๋ฐœ๊ฒฌํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๋ถ„์„๊ธฐ ๋ฒ„์ „ ์ˆ˜์ •์˜ ์ค‘์š”์„ฑ์— ๋Œ€ํ•ด

๊ฒฐ๋ก ์ ์œผ๋กœ ์ฃผ๋ชฉํ•ด์•ผ ํ•  ์ ์€ ๋”œ๋ฆฌ๋ฒ„๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ์— ๋ถ„์„์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๋“  ๋ถ„์„๊ธฐ ๋ฒ„์ „์„ ๊ณ ์ •ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ถ„์„๊ธฐ๊ฐ€ ์ž๋ฐœ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋„๋ก ํ—ˆ์šฉํ•˜๋ฉด ๋‹ค์Œ ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ์„ ์กฐํ•ฉํ•  ๋•Œ ์ฝ”๋“œ ๋ณ€๊ฒฝ๊ณผ ๊ด€๋ จ์ด ์—†์ง€๋งŒ ์ƒˆ ๋ถ„์„๊ธฐ๊ฐ€ ๋‹จ์ˆœํžˆ ๋” ๋งŽ์€ ๊ฒฐํ•จ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค๊ณผ ๊ด€๋ จ๋œ ์ƒˆ๋กœ์šด ๊ฒฐํ•จ์ด "ํŒ์—…"๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ์„ ์ˆ˜๋ฝํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. ๋ถ„์„๊ธฐ ์—…๊ทธ๋ ˆ์ด๋“œ๋Š” ์˜์‹์ ์ธ ์กฐ์น˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ ์–ด์…ˆ๋ธ”๋ฆฌ ๊ตฌ์„ฑ ์š”์†Œ ๋ฒ„์ „์˜ ๊ฒฌ๊ณ ํ•œ ๊ณ ์ •์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํ•„์š”ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์ด๋ฉฐ ๋ณ„๋„์˜ ๋…ผ์˜ ์ฃผ์ œ์ž…๋‹ˆ๋‹ค.

์กฐ์‚ฌ ๊ฒฐ๊ณผ

  • ์ •์  ๋ถ„์„์€ ๋ฒ„๊ทธ๋ฅผ ์ฐพ์•„์ฃผ์ง€ ์•Š์œผ๋ฉฐ ๋‹จ์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฐ๊ณผ๋กœ ์ œํ’ˆ ํ’ˆ์งˆ์„ ํ–ฅ์ƒ์‹œํ‚ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ’ˆ์งˆ์— ๋Œ€ํ•œ ๊ธ์ •์ ์ธ ํšจ๊ณผ๋Š” ๋ฐฐ์†ก ๊ณผ์ •์—์„œ ์ง€์†์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ๋งŒ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฒ„๊ทธ๋ฅผ ์ฐพ๋Š” ๊ฒƒ์€ ๋ถ„์„์˜ ์ฃผ์š” ์ž‘์—…์ด ์•„๋‹ˆ๋ฉฐ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์˜ ๋Œ€๋ถ€๋ถ„์€ ์˜คํ”ˆ ์†Œ์Šค ๋„๊ตฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ์— ๋Œ€ํ•œ "๋ž˜์นซ"์„ ์‚ฌ์šฉํ•˜์—ฌ ์ „๋‹ฌ ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์—์„œ ์ •์  ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ’ˆ์งˆ ๊ฒŒ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ์กฐ

  1. ์—ฐ์† ๋ฐฐ๋‹ฌ
  2. A. Kudryavtsev: ํ”„๋กœ๊ทธ๋žจ ๋ถ„์„: ์ž์‹ ์ด ํ›Œ๋ฅญํ•œ ํ”„๋กœ๊ทธ๋ž˜๋จธ์ธ์ง€ ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ• ๋‹ค์–‘ํ•œ ์ฝ”๋“œ ๋ถ„์„ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค(์ •์  ๋ถ„์„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ!)

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€