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].
-
์์ฑ์๋ ๋ ์์๊ฒ ์ฃผ์ ์ฌ์ฉ ์ฌ๋ก, ์คํ ๋ฆฌ ์นด๋ ๋๋ ์์ฑ๋ ๊ธฐ๋ฅ์ ์๋ ค์ค๋๋ค. ์์ฑ์๋ ๋์์ธ์ด๋ ์ฝ๋๋ฅผ ์ค๋ช ํ์ง ์์ต๋๋ค.
-
์์ฑ์๋ ์ด๋ค ํ์ผ์ด ์ถ๊ฐ๋๊ฑฐ๋ ์์ ๋์๋์ง ํ์ํ๋ฉฐ, ํ ์คํธ ์ผ์ด์ค๋ถํฐ ์์ํ๋ฉด ํด๋ผ์ด์ธํธ ์ฝ๋์์ ์ฝ๋๊ฐ ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง ์ดํดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
-
๋ ์๋ ์ฝ๋๋ฅผ ์๋ฆฌ๋ด์ด ์ฝ๊ณ ๋ ์์ ์ฌ๊ณ ๊ณผ์ ์ ์ค๋ช ํฉ๋๋ค. ์ฝ๋๊ฐ ๋ช ํํ์ง ์์ผ๋ฉด ๋ ์๋ ์ฝ๋์ ์๋๋ฅผ ์ถ์ธกํฉ๋๋ค. ๋ ์๋ ์ฝ๋ ๋์์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ๋์ง ๊ตฌ๋๋ก ์ค๋ช ํ๊ณ ์ฌ๊ณ ๊ณผ์ ์ ์ค๋ช ํฉ๋๋ค. ์์ฑ ์ง๋ฌธ์ ๋ ์์ ์์ฑ์์๊ฒ ์ด์ ์ ๋ง์ถ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋ ์๊ฐ ์ต์ํ์ง ์๋ ํ๋ก๊ทธ๋๋ฐ ๊ตฌ๋ฌธ์ผ๋ก ์ธํด ์ฝ๋ ์ค์ ์ดํดํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ ๋ ์๋ ์์ฑ์์๊ฒ ์ํ ๋์์ ๋ํด ๋ฌป์ต๋๋ค.
-
์์ฑ์๋ ๋ ์๊ฐ ์๊ฐํ๊ฑฐ๋ ๋ฌป๋ ๊ฒ์ ์๋ตํ์ง ์์ต๋๋ค. ์์ฑ์๋ ํน์ ์น์ ์ ํผ๋์ค๋ฝ๊ฒ ๋ง๋๋ ์์์ ๋ํด ๋ฉ๋ชจ ํ ์ ์์ต๋๋ค.
-
๋ง์ง๋ง์ ๋ ์๋ ๋ ์๊ฐ ์ฝ๋๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๊ณ ์์์ ์์ฑ์์๊ฒ ํ์ธํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์์ฑ์๋ ๊ฒฝํ์ ๋ํ ๋ช ํํ ์ง๋ฌธ์ ๋ ์์๊ฒ ๋ฌป์ต๋๋ค.
-
์์ฑ์์ ๋ ์๊ฐ ์ฝ๋๋ฅผ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ ผ์ํฉ๋๋ค.
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 ์ฝ๋์ ๊ฒฝ์ฐ ํ๋ก์ ํธ์ ์ ์ถํ๊ธฐ ์ ์ ์ฝ๋๋ฅผ ์ฌ์์ ํด์ผ ํ์ต๋๋ค. ์ด ๋ ๊ทธ๋ฃน์ ๋น๊ตํ ๋ ์ฝ๋ ์ํ์ ์ค์ ๋ก ๋ฐค๋ฎ์ด์์ต๋๋ค.