Code Readability Testing, an Empirical Study - ChoDragon9/posts GitHub Wiki

https://www.researchgate.net/publication/299412540_Code_Readability_Testing_an_Empirical_Study

์š”์•ฝ

์ปจํ…์ŠคํŠธ

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

๋ชฉํ‘œ

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

๋ฐฉ๋ฒ•

์—ฐ๊ตฌ์›์€ 21๋ช…์˜ ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋ง ๋งˆ์Šคํ„ฐ ํ•™์ƒ์„ ๋Œ€์ƒ์œผ๋กœ ํ˜„์žฅ ์—ฐ๊ตฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ฐ ํ•™์ƒ๊ณผ ํ•จ๊ป˜ ์„œ๋กœ ๋‹ค๋ฅธ "ํ”„๋กœ๋•์…˜ ์ค€๋น„" ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํ‰๊ฐ€ํ•˜๋Š” 4๊ฐœ์˜ ๊ฐœ๋ณ„ ์„ธ์…˜์—์„œ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ ํ…Œ์ŠคํŠธ๋ฅผ ๋”ฐ๋ž์Šต๋‹ˆ๋‹ค. ๊ด€์ฐฐ ํ›„ ์„ค๋ฌธ์ง€๋ฅผ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ๊ด€์ ์„ ํ‰๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ

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

๊ฒฐ๋ก 

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

1. ์†Œ๊ฐœ

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

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

์ด ๊ธฐ์ˆ ์„ ๊ฐ€๋ฅด์น˜๋Š” ๊ฒƒ์€ ์ปดํ“จํ„ฐ ๊ณผํ•™ ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™ ์ปค๋ฆฌํ˜๋Ÿผ์—์„œ ์ตœ์šฐ์„  ์ˆœ์œ„๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ ๊ณผํ•™ ์ปค๋ฆฌํ˜๋Ÿผ์€ ์ฝ๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๋ผ ํŠน์ • ์–ธ์–ด(์˜ˆ: functional vs. non-functional)์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์ดํ•ดํ•˜๋„๋ก ์žฅ๋ คํ•ฉ๋‹ˆ๋‹ค [2]. SWEBOK(Software Engineering Body of Knowledge)๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์„ฑ ์ง€์‹ ์˜์—ญ์— ๋Œ€ํ•œ ์ฝ”๋”ฉ ์‹ค์šฉ์  ๊ณ ๋ ค์‚ฌํ•ญ[3]์—์„œ "์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ"์ž‘์„ฑ์„ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ SWEBOK์˜ 229๊ฐœ์˜ ํ•˜์œ„ ์ฃผ์ œ ์ค‘ ํ•˜๋‚˜์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค. ๋Œ€ํ•™์› ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋ง ์ฐธ๊ณ  ์ปค๋ฆฌํ˜๋Ÿผ(GSwE)์€ ์ด ์ฃผ์ œ์— ๋Œ€ํ•ด SWEBOK ์ด์™ธ์˜ ์ถ”๊ฐ€ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ๊ทœ์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค [4]. ์ผ๋ถ€ ํ•™๋ถ€ ๊ณผ์ •์—์„œ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์Šคํƒ€์ผ ๋ฌธ์ œ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ๊ณผ์ •์€ ์ฝ์„ ์ˆ˜ ์—†๋Š” ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•™์ƒ์—๊ฒŒ ๋ถˆ์ด์ต์„ ์ค๋‹ˆ๋‹ค. In rare courses, ํ•™์ƒ๋“ค์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ฝ”๋“œ๋ฅผ ์ด์–ด๋ฐ›์€ ๊ฒฝํ—˜์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ณผ์ œ๋ฅผ ๊ตํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ•™์ƒ๋“ค์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ํ•„์š”์„ฑ์— ๋ฏผ๊ฐํ•ด์ง€์ง€๋งŒ, ๊ฒฝํ—˜์„ ๊ธฐ์ˆ ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ๊ตฌ์ฒด์ ์ธ ๋‹จ๊ณ„๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ ๊ณผํ•™ ์ปค๋ฆฌํ˜๋Ÿผ ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋ง ์ปค๋ฆฌํ˜๋Ÿผ์˜ ๊ฐ•์กฐ๋Š” ์ฐธ์กฐ ์ปค๋ฆฌํ˜๋Ÿผ์˜ ์‹ค์งˆ์ ์ธ ์ฃผ์ œ์— ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

Code Readability Testing์€ ์ฝ”๋“œ๋ฅผ ์ฝ์„ ์ˆ˜ ์—†๋Š” ์˜์—ญ์„ ๋ณด์—ฌ์ฃผ๊ณ  ์ฝ”๋”์™€ ๋ฆฌ๋” ์‚ฌ์ด์˜ ๋Œ€ํ™”๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ž‘์„ฑ์ž๋Š” ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ์‚ฌ๋žŒ์ด ์ฝ”๋“œ๋ฅผ ์ •ํ™•ํžˆ ์–ด๋–ป๊ฒŒ ํ•ด์„ํ•˜๋Š” ์ง€ ์•Œ๊ธฐ ๋•Œ๋ฌธ์— ํ”ผ๋“œ๋ฐฑ์€ ์ฆ‰๊ฐ์ ์ž…๋‹ˆ๋‹ค.

A. ์—ฐ๊ตฌ ๋ชฉํ‘œ

GQM(Goal Question Metric)์˜ ๋ชฉํ‘œ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชฉํ‘œ๋Š” ์—ฐ๊ตฌ์›์˜ ๊ด€์ ์—์„œ ํšจ์œจ์„ฑ๊ณผ ๊ด€๋ จํ•˜์—ฌ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋Šฅ๋ ฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ๊ทธ ํšจ๊ณผ๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ ๊ฐ€๋…์„ฑ ํ…Œ์ŠคํŠธ๋ฅผ ๋ถ„์„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Carnegie Mellon University์˜ "์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๊ธฐ์ˆ "๊ณผ์ •์˜ ๋งฅ๋ฝ์—์„œ ์ด ํŽ˜์ดํผ์—์„œ๋Š” ์ด ๋ชฉํ‘œ๋ฅผ ๋„ค ๊ฐ€์ง€ ์งˆ๋ฌธ์œผ๋กœ ๋ถ„ํ•ดํ•ฉ๋‹ˆ๋‹ค.

  • ์—ฐ๊ตฌ ์งˆ๋ฌธ 1: ์ฝ”๋“œ ๊ฐ€๋…์„ฑ ํ…Œ์ŠคํŠธ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋”ฐ๋ฅด๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
  • ์—ฐ๊ตฌ ์งˆ๋ฌธ 2: ์ฝ”๋“œ ๊ฐ€๋…์„ฑ ํ…Œ์ŠคํŠธ๊ฐ€ ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋ฌธ์ œ๋ฅผ ๊ฐ์ง€ํ•ฉ๋‹ˆ๊นŒ?
  • ์—ฐ๊ตฌ ์งˆ๋ฌธ 3: ๊ฐ€๋…์„ฑ ํ…Œ์ŠคํŠธ๋Š” ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋ฉ๋‹ˆ๊นŒ?
  • ์—ฐ๊ตฌ ์งˆ๋ฌธ 4: ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์ฝ”๋“œ ๊ฐ€๋…์„ฑ ํ…Œ์ŠคํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ์ธ์‹ ํ–ˆ์Šต๋‹ˆ๊นŒ?

2. ๋ฐฐ๊ฒฝ ๋ฐ ๊ด€๋ จ ์ž‘์—…

์ฝ”๋“œ ๊ฐ€๋…์„ฑ๊ณผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์Šคํƒ€์ผ์„ ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์€ ์†Œํ”„ํŠธ์›จ์–ด ์‚ฐ์—…์˜ ์ƒˆ๋กœ์šด ์ฃผ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

Kernighhan๊ณผ Plauger๋Š” 1974๋…„ ์ €์„œ The Elements of Programming Style์—์„œ ์ปดํ“จํ„ฐ ๊ณผํ•™ ๊ต๊ณผ์„œ์— ์‚ฌ์šฉ๋œ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜์—ฌ ์ฝ”๋”ฉ ๊ด€ํ–‰๊ณผ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ํœด๋ฆฌ์Šคํ‹ฑ์Šค๋ฅผ ๋ฌธ์„œํ™”ํ•ฉ๋‹ˆ๋‹ค [5]. 1982๋…„ ์ €์„œ, Understanding the Professional Programmer์—์„œ Gerald Weinberg๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ปดํ“จํ„ฐ์˜ ์ปดํŒŒ์ผ๋Ÿฌ๋‚˜ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ณด๋‹ค ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ์‚ฌ๋žŒ์ด ๋” ์ค‘์š”ํ•œ์ ์„ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Š” ์˜๋ฌธ ํ…์ŠคํŠธ์˜ ์ž‘์„ฑ ๊ณผ์ •๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ฝ”๋“œ๊ฐ€ ๋ชจ๋ฒ”์ ์ธ ์ฝ”๋“œ๊ฐ€ ๋˜๊ธฐ ์ „์— ์—ฌ๋Ÿฌ๋ฒˆ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋ฏธ๋ž˜์— ์ž์ฃผ ์ฝ์„ ์ฝ”๋“œ๋ฅผ ์žฌ์ž‘์—…ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ํ• ์•  ํ•˜๋„๋ก ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค [6].

์ „๋ฌธ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•œ ์ตœ๊ทผ์˜ ์ฑ…์—์„œ Andrew Hunt, David Thomas, Kent Beck ๋ฐ Robert Martin์€ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ์Šคํƒ€์ผ์„ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Pragmatic Programmers์—์„œ Hunt์™€ Thomas๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ž์‹ ์˜ ๊ธฐ์ˆ ์„ ์Šต๋“ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋„๊ตฌ, ํ”„๋กœ์„ธ์Šค ๋ฐ ํŠธ๋ฆญ์„ ์กฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค [7]. Clean Code์—์„œ Robert Martin์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋” ๋‚˜์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๊ธฐ์ˆ ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค [8]. Implementation Patterns์—์„œ Kent Beck์€ ์ข‹์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋””์ž์ธ ํŒจํ„ด์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค [9]. ํ•œ๋งˆ๋””๋กœ ๋งํ•˜๋ฉด, ๊ทธ๋“ค์€ ํ‰์ƒ์˜ ๊ฒฝํ—˜์„ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋กœ ์ถ”์ถœํ•˜๊ณ  ๊ทธ์ค‘ ์ผ๋ถ€๋Š” ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

์ตœ๊ทผ ์—ฐ๊ตฌ์—์„œ ์—ฐ๊ตฌ์›๋“ค์€ ๋‹ค์–‘ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์—์„œ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์„ ์กฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค: ์ž๋™ํ™”๋œ ๊ฐœ์„  ๊ธฐ์ˆ , ์‹๋ณ„์ž ์ด๋ฆ„ ์ง€์ •, ๊ตฌ๋ฌธ ๋ฐ ์ž๋™ํ™”๋œ ๋ฉ”ํŠธ๋ฆญ. ์—ฌ๋Ÿฌ ์—ฐ๊ตฌ์—์„œ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๊ธฐ์ˆ ์„ ์ž๋™ํ™”ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Wang์€ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ์— ๋นˆ ์ค„์ด ์ž๋™์œผ๋กœ ์‚ฝ์ž…๋˜๋Š” ๊ฒƒ์„ ์กฐ์‚ฌํ•˜๊ณ  [10] Sasaki๋Š” ์‚ฌ์šฉ์ง์ „์— ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜์—ฌ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฌธ์„ ์žฌ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค [11]. ๋ช‡๋ช‡ ์—ฐ๊ตฌ์ž๋“ค์€ ์‹๋ณ„์ž์˜ ์ด๋ฆ„์„ ์กฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค [12], [13], [14], [15]. Relf์˜ ๋„๊ตฌ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณ€์ˆ˜ ๋ฐ ๋ฉ”์„œ๋“œ ์ด๋ฆ„์„ ๊ฐœ์„ ํ•˜๋„๋ก ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค [15]. Binkley๋Š” camel case๊ฐ€ underscore ๋ณ€์ˆ˜๋ณด๋‹ค ์ฝ๊ธฐ ์‰ฝ๋‹ค๋Š” ๊ฒƒ์„ ๊ด€์ฐฐํ•ฉ๋‹ˆ๋‹ค [16]. Jones๋Š” ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์—์„œ ์—ฐ์‚ฐ์ž ์šฐ์„  ์ˆœ์œ„ ๋ฌธ์ œ๋ฅผ ์กฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค [17].

์ธ๊ฐ„ ํ‰๊ฐ€๋Š” ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์˜ ํ‘œ์ค€์œผ๋กœ ๋‚จ์•„ ์žˆ์ง€๋งŒ ์ž๋™ํ™”๋œ ๋ฉ”ํŠธ๋ฆญ์€ ์ข…์ข… ํ”„๋ก์‹œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ช‡๋ช‡ ์—ฐ๊ตฌ๋Š” ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐ€๋…์„ฑ์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ ๊ฐ€๋…์„ฑ ๋ฉ”ํŠธ๋ฆญ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค [18], [19], [20].

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

A. ๋‹ค๋ฅธ ๊ธฐ์ˆ ๊ณผ์˜ ๋น„๊ต

ํ‘œ I

Technique Code Readability Code Review Fagan Inspection Pair Programming
Purpose Understand code Find defects, Understand code Find defects High quality code
Roles Author, Reader Author, Reviewer Author, Moderator, Inspector (2+), Recorder, Reader / Timekeeper Author, Author
Feedback to the author is Synchronous Asynchronous Asynchronous N/A

Fagan Inspections, Code Reviews ๋ฐ Pair Programming์€ ํ‘œ I์— ์š”์•ฝ๋œ ๋Œ€๋กœ ์ฝ”๋“œ ํ’ˆ์งˆ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋‹ค๋ฅธ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. Fagan Inspections์€ ๊ฐœ๋ฐœ์ž ์œ„์›ํšŒ๊ฐ€ ์ฝ”๋“œ๋ฅผ ๊ฒ€ํ† ํ•˜๋Š” ๊ฒฐํ•จ์„ ์ฐพ๊ธฐ ์œ„ํ•œ ์ž…์ฆ๋œ ์‹œ๊ฐ„ ์ง‘์•ฝ์ ์ธ ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค [21]. ๊ฒ€์‚ฌ์—๋Š” ์ข…์ข… ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ์™€ ์ฝ”๋”ฉ ํ‘œ์ค€์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ž‘์„ฑ์ž๊ฐ€ ์ฐธ์„ํ•˜๋Š” ๋™์•ˆ ๊ฐ•์กฐ์ ์„ ๊ฒฐํ•จ ์‹๋ณ„์— ์žˆ์œผ๋ฉฐ ๋ฆฌ๋ทฐ์–ด๊ฐ€ ์ฝ”๋“œ๋กœ ์ธํ•ด ํ˜ผ๋™ ๋  ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋ฅผ ๋ฐํžˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Code Reviews ์˜์—ญ์€ ํ•œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์†Œ์Šค ์ฝ”๋“œ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์˜ ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜ ๋˜๋Š” ํŠธ๋ ํฌ์— ์ปค๋ฐ‹๋˜๊ธฐ ์ „์— ์ฝ”๋“œ๋ฅผ ๊ฒ€ํ† ํ•˜๋Š” ์ธ๊ธฐ์žˆ๊ณ  ๊ฐ€๋ฒผ์šด ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค [22]. ์ €์ž๋Š” ์ˆ˜์ •์„ ์œ„ํ•ด ์ œ์•ˆ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋˜๋Š” ๋ฌธ์ œ ๋ชฉ๋ก์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ž‘์„ฑ์ž๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ž‘์„ฑ์ž๋Š” ๊ฒ€ํ† ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๊ฑฐ์น˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ต์œกํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ฃผ๋กœ ๋ฒ„๊ทธ ๊ฐ์ง€ [22], [23]์— ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Pair Programming์€ ๋‘ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋™์‹œ์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Pair Programming์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ์ง€์†์ ์œผ๋กœ ๊ฒ€ํ†  ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ž‘์„ฑ์ž๊ฐ€ ๊ด€์ฐฐ ํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๋ฅผ ๋“œ๋Ÿฌ ๋‚ผ ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ๊ด€์ ์„ ์ œ๊ณตํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ฑ„ํƒ์— ๋Œ€ํ•œ ์ €ํ•ญ์€ Solo Programming ๋ณด๋‹ค ๋” ๋น„์‹ธ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒฝ์˜์ง„์ด๋‚˜ ๊ทธ ๊ณผ์ •์˜ ์‚ฌํšŒ์  ์˜๋ฏธ๋ฅผ ์ข‹์•„ํ•˜์ง€ ์•Š๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ์„œ ๋‚˜์˜ต๋‹ˆ๋‹ค.

๋…ธํŠธ: Bacchelli์™€ Bird๋Š” ์‹ค์ œ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ๋†’์ด๊ณ  ์žˆ์„ ๋•Œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ Code Review์˜ ๋ชฉ์ ์ด ๊ฒฐํ•จ์„ ์ฐพ๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค๊ณ  ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค [23]. ์ด๊ฒƒ์ด Code Review์˜ ์ฃผ์š” ์ด์ ์ด๋ผ๋ฉด Code Review ๊ธฐ์ˆ ๋ณด๋‹ค๋„ ์ฝ”๋“œ ์ดํ•ด ๋Šฅ๋ ฅ์„ ๋” ํšจ์œจ์ ์œผ๋กœ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์„ค๊ณ„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Perspective-Based-Reading์€ ์‚ฌ์šฉ์ž, ๊ฐœ๋ฐœ์ž, ํ…Œ์Šคํ„ฐ์™€ ๊ฐ™์€ ๊ทœ์ •๋œ ์—ญํ• ๊ณผ ํ•จ๊ป˜ ์š”๊ตฌ์‚ฌํ•ญ ๋ฌธ์„œ๋ฅผ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค [25]. ๊ฐœ๋ฐœ์ž๋Š” ์š”๊ตฌ์‚ฌํ•ญ์„ ์„ค๊ณ„๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ํ…Œ์Šคํ„ฐ๋Š” ์š”๊ตฌ์‚ฌํ•ญ์— ๋ˆ„๋ฝ ๋ฐ ๊ฒฐํ•จ์ด ์žˆ๋Š” ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์š”๊ตฌ์‚ฌํ•ญ์„ ํ…Œ์ŠคํŠธ ๊ณ„ํš์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ "๊ด€๋ จ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?"๋ผ๋Š” ์งˆ๋ฌธ์ด ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” "์ฝ”๋“œ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋Š”์ง€ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?"๋ผ๊ณ  ์ž๋ฌธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. Code Readability Testing

์„ธ์…˜์—์„œ ์ฝ”๋“œ ์ž‘์„ฑ์ž๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์—ฌ๋ถ€์™€ ์œ„์น˜๋ฅผ ๊ด€์ฐฐํ•ฉ๋‹ˆ๋‹ค. ์„ธ์…˜์ด ๋๋‚˜๋ฉด ๋‘ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋…ผ์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ž‘์„ฑ์ž์˜ ์ฝ”๋“œ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ณ  ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฝ”๋“œ ์ž‘์„ฑ์ž์—๊ฒŒ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค [26].

  1. ์ž‘์„ฑ์ž๋Š” ๋…์ž์—๊ฒŒ ์ฃผ์š” ์‚ฌ์šฉ ์‚ฌ๋ก€, ์Šคํ† ๋ฆฌ ์นด๋“œ ๋˜๋Š” ์ƒ์„ฑ๋œ ๊ธฐ๋Šฅ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์ž‘์„ฑ์ž๋Š” ๋””์ž์ธ์ด๋‚˜ ์ฝ”๋“œ๋ฅผ ์„ค๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  2. ์ž‘์„ฑ์ž๋Š” ์–ด๋–ค ํŒŒ์ผ์ด ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์ˆ˜์ •๋˜์—ˆ๋Š”์ง€ ํ‘œ์‹œํ•˜๋ฉฐ, ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ์—์„œ ์ฝ”๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

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

  4. ์ž‘์„ฑ์ž๋Š” ๋…์ž๊ฐ€ ์ƒ๊ฐํ•˜๊ฑฐ๋‚˜ ๋ฌป๋Š” ๊ฒƒ์— ์‘๋‹ตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž‘์„ฑ์ž๋Š” ํŠน์ • ์„น์…˜์„ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“œ๋Š” ์š”์†Œ์— ๋Œ€ํ•ด ๋ฉ”๋ชจ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  5. ๋งˆ์ง€๋ง‰์— ๋…์ž๋Š” ๋…์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์žˆ์Œ์„ ์ž‘์„ฑ์ž์—๊ฒŒ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ž‘์„ฑ์ž๋Š” ๊ฒฝํ—˜์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ์งˆ๋ฌธ์„ ๋…์ž์—๊ฒŒ ๋ฌป์Šต๋‹ˆ๋‹ค.

  6. ์ž‘์„ฑ์ž์™€ ๋…์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋…ผ์˜ํ•ฉ๋‹ˆ๋‹ค.

Human Computer Interaction์˜ ์‚ฌ์šฉ์„ฑ ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•[27]์€ ์ด ํ”„๋กœ์„ธ์Šค์˜ ๋ชจ๋ธ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์„ฑ ํ…Œ์ŠคํŠธ์—์„œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๋””์ž์ด๋„ˆ๋Š” ๋Œ€ํ‘œ ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กœํ† ํƒ€์ž… ๋˜๋Š” ์ œํ’ˆ์˜ ์‹ค์ฒด ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ž‘์—…์„ ์‹œ๋„ํ•˜๋Š” ๊ฒƒ์„ ์ง€์ผœ๋ด…๋‹ˆ๋‹ค. ์—ฐ๊ตฌ์›์€ ์‚ฌ์šฉ์ž๋ฅผ ๊ด€์ฐฐํ•˜์—ฌ ๋ฌด์—‡์ด ๋ถ„๋ช…ํ•˜๊ณ  ๋ฌด์—‡์ด ์‚ฌ์šฉ์ž๋ฅผ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒํ•˜๋Š”์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ์‹œ์Šคํ…œ๊ณผ ์‚ฌ์šฉ์ž์˜ ์ž์—ฐ์Šค๋Ÿฌ์šด ์ƒํ˜ธ ์ž‘์šฉ์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๋””์ž์ธ์— ์ž์—ฐ์Šค๋Ÿฌ์šด affordances๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ ๊ธฐ๋Œ€์—์„œ ๋ฒ—์–ด๋‚˜๋Š” ์‹œ์Šคํ…œ์€ ๊ฐœ์„ ๋œ ๋””์ž์ธ์˜ ๊ธฐํšŒ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. Code Readability Testing์—์„œ ์ œํ’ˆ์€ ์†Œ์Šค ์ฝ”๋“œ์ด๊ณ  ์‚ฌ์šฉ์ž๋Š” ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค.

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

4. ํ˜„์žฅ ์—ฐ๊ตฌ

์—ฐ๊ตฌ์›์€ 4๊ฐœ์˜ ๊ฐœ๋ณ„ ์ผ๋Œ€์ผ ์„ธ์…˜์—์„œ ๊ฐ ํ”„๋กœ๊ทธ๋ž˜๋จธ์™€ ํ•จ๊ป˜ Code Readability Testing์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ํšจ์œจ์„ฑ์„ ํ‰๊ฐ€ํ•˜๊ณ  ๊ฐœ์„ ์‚ฌํ•ญ์„ ๊ด€์ฐฐํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” 2013๋…„ ๋ด„ ํ•™๊ธฐ ๋™์•ˆ ์‹ค๋ฆฌ์ฝ˜ ๋ฒจ๋ฆฌ์˜ Carnegie Mellon University์—์„œ "Craft of Software Development" ๊ณผ์ •์— ๋“ฑ๋กํ•œ 21๋ช…์˜ ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™ ๋Œ€ํ•™์›์ƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์—ฐ๊ตฌ์›์€ ๊ฐ ์„ธ์…˜์„ 30๋ถ„ ๋™์•ˆ 3์ฃผ ๊ฐ„๊ฒฉ์œผ๋กœ ์Šค์ผ€์ค„ํ•˜์—ฌ 84๊ฐœ์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋ฅผ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์„ธ์…˜์—์„œ ์—ฐ๊ตฌ์›์€ ํ•™์ƒ๋“ค์—๊ฒŒ "์ƒ์‚ฐ ์ค€๋น„๊ฐ€๋œ" ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ ์˜ค๋„๋ก ์š”์ฒญํ–ˆ์Šต๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์‹ค์ œ ํ”„๋กœ์ ํŠธ์— ์ถœ์‹œ๋  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•™์ƒ๋“ค์€ ์ž์‹ ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์„ธ์…˜์ด ๋๋‚  ๋•Œ ์—ฐ๊ตฌ์›์€ ๊ฒ€ํ†  ๊ธฐ๊ฐ„, ๋ฐœ๊ฒฌ๋œ ๋ฌธ์ œ์˜ ์ˆ˜์™€ ์œ ํ˜•, ์ „์ฒด ๊ฐ€๋…์„ฑ ์ ์ˆ˜ ํ‰๊ฐ€๋ฅผ ๊ธฐ๋กํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•™์ƒ์˜ ์ „๋ฌธ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์€ 0๋…„์—์„œ 8๋…„ ์‚ฌ์ด์˜€์Šต๋‹ˆ๋‹ค. ํ‰๊ท  ๊ฒฝ๋ ฅ ์—ฐ์ˆ˜๋Š” 3๋…„์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€๋…์„ฑ ์ ์ˆ˜

์ด ๋ฌธ์„œ์—์„œ๋Š” ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ •์‹ ์  ๋…ธ๋ ฅ์˜ ์–‘์œผ๋กœ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์กฐ์‚ฌํ•œ ํ›„ ์—ฐ๊ตฌ์›์€ ์ด ์ฒ™๋„์— ๋”ฐ๋ผ ๊ฐ€๋…์„ฑ ์ ์ˆ˜๋ฅผ ํ• ๋‹นํ–ˆ์Šต๋‹ˆ๋‹ค.

4) Easy to read
3) Pretty easy to read
2) Medium difficulty
1) Very challenging

๊ธฐ์กด ์—ฐ๊ตฌ [10], [11], [20], [28], [29]์—๋Š” ํ‘œ์ค€ ๊ฐ€๋…์„ฑ ์ •์˜๋‚˜ ์ ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. Buse์™€ Dorn ์—ฐ๊ตฌ ๋ชจ๋‘์—์„œ ์ฐธ๊ฐ€์ž๋Š” Likert ์ฒ™๋„๋กœ ์ฝ”๋“œ๋ฅผ "very unreadable" 1์—์„œ "very readable" 5, "unreadable"์—์„œ readable"๋ฅผ ํ‰๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค [18], [19]. ์ฐธ๊ฐ€์ž๋Š” ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ์ž์‹ ์˜ ์˜๋ฏธ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

์ด scale์€ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์—ฐ๊ตฌ์›์€ ๊ฒ€ํ†  ๊ธฐ๊ฐ„์ด ํ•„์š”ํ•œ ๋…ธ๋ ฅ์˜ ์–‘๊ณผ ๊ด€๋ จ์ด ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "easy to read" ์ฝ”๋“œ๋ฅผ ๊ฒ€ํ† ํ•˜๋Š” ๊ฒƒ์€ ๊ฒ€ํ† ํ•˜๋Š” ๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ‰๊ท  ๊ธธ์ด๋Š” 4๋ถ„ ์ฐจ์ด๋กœ 8๋ถ„์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์ฝ๊ธฐ ์œ„ํ•ด "very challenging" ๊ฒ€ํ† ๋Š” ์ข…์ข… ์ „์ฒด ์„ธ์…˜์„ ์†Œ๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋…์„ฑ ์ ์ˆ˜์™€ ๊ฒ€ํ†  ์‹œ๊ฐ„ ๊ฐ„์˜ ์ƒ๊ด€ ๊ด€๊ณ„๋Š” 0.77์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ "easy to read" ์ฝ”๋“œ๋Š” ๋…์ž์—๊ฒŒ ๊ฐ„๋‹จํ•œ ์„ค๋ช…์„ ์ œ๊ณตํ•˜์—ฌ ๋‹จ๊ธฐ ๊ธฐ์–ต์— ๋ช‡ ๊ฐ€์ง€ ํ•ญ๋ชฉ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. "very challenging" ์ฝ”๋“œ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์˜๋„๋ฅผ ํ๋ฆฌ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๋…์ž๊ฐ€ ํ•œ ์žฅ์˜ ์ข…์ด๋ฅผ ์žก๊ณ  ํ”„๋กœ๊ทธ๋žจ ๋กœ์ง์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€์ˆ˜๊ฐ’์„ ์ ์–ด ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰ํ•˜๋ฉด ์ฝ”๋“œ๋Š” ์ฝ๊ธฐ๊ฐ€ "very challenging" ํ•ฉ๋‹ˆ๋‹ค.

๋งŽ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ํ•ด๊ฒฐ์ฑ…์ด ์žˆ์Šต๋‹ˆ๋‹ค. "very challenging" ์ฝ”๋“œ๋Š” ์†”๋ฃจ์…˜์—๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์†”๋ฃจ์…˜์ด๋‚˜ ์ผ๋ฐ˜์ ์ธ ๊ตฌ์„ฑ์„ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ์˜ ์†”๋ฃจ์…˜์ด ์†”๋ฃจ์…˜์— ๋Œ€ํ•œ ๋…์ž์˜ ๊ธฐ๋Œ€์™€ ๋‹ค๋ฅด๋ฉด ๋…์ž๋Š” ์ฝ”๋“œ๊ฐ€ "very challenging" ์ž„์„ ์•Œ๊ฒŒ๋ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€ํ†  ํ•œ ํ›„ ๋ฐ์ดํ„ฐ๊ฐ€ "readable" ์ฝ”๋“œ์™€ "unreadable" ์ฝ”๋“œ์˜ ๋‘ ๊ทธ๋ฃน์œผ๋กœ ์ถ•์†Œ ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ์—ฐ๊ตฌ์›์€ "easy to read" ์ฝ”๋“œ์™€ "Pretty easy to read" ์ฝ”๋“œ ์ƒ˜ํ”Œ์„ "readable" ์ฝ”๋“œ๋กœ ๋ถ„๋ฅ˜ํ•˜๊ณ  "very challenging" ๋ฐ "medium difficulty" ์ฝ”๋“œ ์ƒ˜ํ”Œ์„ "unreadable" ์ฝ”๋“œ๋กœ ๋ถ„๋ฅ˜ํ–ˆ์Šต๋‹ˆ๋‹ค. unreadable ์ฝ”๋“œ์˜ ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ์— ์ œ์ถœํ•˜๊ธฐ ์ „์— ์ฝ”๋“œ๋ฅผ ์žฌ์ž‘์—…ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‘ ๊ทธ๋ฃน์„ ๋น„๊ตํ•  ๋•Œ ์ฝ”๋“œ ์ƒ˜ํ”Œ์€ ์‹ค์ œ๋กœ ๋ฐค๋‚ฎ์ด์—ˆ์Šต๋‹ˆ๋‹ค.