E D R , A S I H C RSS

Collective Ownership

์ฝ”๋“œ ๊ณต๋™ ์†Œ์œ 

๋งŒ์•ฝ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ํด๋ž˜์Šค์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ณ€๊ฒฝํ–ˆ์œผ๋ฉด ๋ณ€๊ฒฝ๋œ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๊ฒŒ๋˜๋ฉด ํด๋ž˜์Šค๋ฅผ ๋ณ€๊ฒฝํ•œ ์‚ฌ๋žŒ์ด ๋ชจ๋“  ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•ด์•ผ๋งŒ ํ•˜๋Š”๊ฐ€, ์•„๋‹ˆ๋ฉด ๋จผ์ €(์ปดํŒŒ์ผ ์‹œ๊ฐ„์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ• ๊บผ ๊ฐ™์€๋ฐ) ๋ฐœ๊ฒฌํ•œ ์‚ฌ๋žŒ์ด ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š”๊ฐ€?

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

ํŠนํžˆ ์ด๋ฏธ ๋งŽ์ด ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋œ ์‹œ์ ์—์„œ ํด๋ž˜์Šค์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ๋„ˆ๋ฌด ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ๋ฐ”๊ฟ”์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฑ์ •(๊ท€์ฐฎ์Œ?)์ด ์•ž์„ค ์ˆ˜ ์žˆ๋‹ค.

Wiki:RefactorLowHangingFruit . ๊ณ ์ณ์•ผ ํ•  ๊ฒƒ์ด ๋งŽ๋‹ค๋ฉด ์˜คํžˆ๋ ค ์กฐ๊ธˆ์”ฉ ๊ณ ์น˜๋„๋ก ํ•œ๋‹ค(๊ทธ๋ฆฌ๊ณ  ๊ณ ์น˜๋Š” ์ž‘์—…์„ ์—”์ง€๋‹ˆ์–ด๋ง ํƒœ์Šคํฌ๋กœ ํ˜น์€ ์œ ์ € ์Šคํ† ๋ฆฌ๋กœ ๋ช…์‹œํ™”ํ•ด์„œ ๊ด€๋ฆฌํ•œ๋‹ค). ๊ณ ์น˜๋Š” ์ค‘์—, 5๋ถ„ ์ •๋„์˜ ๋‹จ์œ„๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ด์„œ ํ•˜๋‚˜๋„ ๋ฌธ์ œ๊ฐ€ ์—†๋„๋ก ๊ณ ์ณ ๋‚˜๊ฐ€์•ผ ํ•œ๋‹ค. ์„ฌ๊ณผ ์œก์ง€๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋‹ค๋ฆฌ๊ฐ€ ์žˆ์„ ๋•Œ, ์ด๊ฑธ ์ƒˆ ๋‹ค๋ฆฌ๋กœ ๊ต์ฒดํ•˜๋ ค๋ฉด ํ—Œ ๋‹ค๋ฆฌ๋ฅผ ๋ถ€์ˆ˜๊ณ  ์ƒˆ ๋‹ค๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ , ์ƒˆ ๋‹ค๋ฆฌ๋ฅผ ๋งŒ๋“  ๋‹ค์Œ ํ—Œ ๋‹ค๋ฆฌ๋ฅผ ๋ถ€์ˆ˜์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ~cpp formatText(String data)์„ ~cpp formatText(String data,boolean shouldBeVeryFancy)๋กœ ๋ฐ”๊พธ์–ด์•ผ ํ•œ๋‹ค๋ฉด, ~cpp fancibleFormatText๋ฅผ ๋งŒ๋“ค๊ณ , ๊ธฐ์กด์˜ ~cpp formatText๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ณณ์„ ~cpp fancibleFormatText(data,false)๋กœ ํ•˜๋‚˜์”ฉ ๋ฐ”๊ฟ”๋‚˜๊ฐ€๋ฉด์„œ ๊ณ„์† ํ…Œ์ŠคํŠธ๋ฅผ ๋Œ๋ ค๋ณด๋ฉด ๋œ๋‹ค. ์ด๊ฒŒ ์™„์ „ํžˆ ๋‹ค ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐ์ด ๋“ค๋ฉด ~cpp formatText ์ •์˜๋ฅผ ์ง€์›Œ๋ณธ๋‹ค. ๋ฌธ์ œ๊ฐ€ ์—†์œผ๋ฉด ~cpp fancibleFormatText๋ฅผ ~cpp formatText๋กœ rename method ๋ฆฌํŒฉํ† ๋ง์„ ํ•ด์ค€๋‹ค. ํ•˜์ง€๋งŒ ๋งŒ์•ฝ ์ด ์ž‘์—…์ด ๋„ˆ๋ฌด ๋‹จ์ˆœ ๋ฐ˜๋ณต์ ์ธ ๊ฒฝ์šฐ์—, ์ถฉ๋ถ„ํžˆ ์šฉ๊ธฐ๊ฐ€ ์ƒ๊ธฐ๊ณ , ๋˜ ํ™•์‹ ์ด ๋“ค๋ฉด ์ด ์ž‘์—…์„ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค(OAOO). ์˜ˆ์ปจ๋Œ€ IDE์—์„œ ์ง€์›ํ•˜๋Š” ์ž๋™ ๋ฆฌํŒฉํ† ๋ง์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์ •๊ทœ์‹์„ ํ†ตํ•œ ๋ฐ”๊พธ๊ธฐ(replace) ๊ธฐ๋Šฅ์„ ์“ฐ๊ฑฐ๋‚˜, ํ•ด๋‹น ์–ธ์–ด ํŒŒ์„œ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•ด์„œ ์“ฐ๋Š” ๋ฐฉ๋ฒ• ๋“ฑ์ด ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํฐ ๊ฑธ์Œ์„ ๋””๋””๋Š” ๊ฒฝ์šฐ์—๋Š” ์ž๋™ํ™” ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์ˆ˜์ ์ด๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ ํ…Œ์ŠคํŠธ ์ฃผ๋„์  ๊ฐœ๋ฐœ์„ ์ œ๋Œ€๋กœ ๋ชปํ•˜๊ณ /์•ˆํ•˜๊ณ  ์žˆ๋‹ค๋ฉด?

์ผ๋‹จ ๋ฆฌํŒฉํ† ๋ง์„ ํ•„์š”๋กœ ํ•˜๋Š” ๋ถ€๋ถ„์„ ํ•œ์ •ํ•˜๊ณ , ๊ทธ ์ฃผ์œ„์— ํ…Œ์ŠคํŠธ ํ”„๋กœ๊ทธ๋žจ์„ ์กฐ๊ธˆ์”ฉ ๋ถ™์—ฌ ๋‚˜๊ฐ€์•ผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฆฌํŒฉํ† ๋ง์„ ํ•œ๋‹ค. ๊ฐ„ํ˜น ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํ…Œ์ŠคํŠธ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์—ฌ๊ธฐ๋Š” ์•ฝ๊ฐ„์€ ์œ„ํ—˜ํ•œ ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค. see also Wiki:RefactoringLegacyCode

Contributors: JuNe, 1002, Benghun, sun

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:57
Processing time 0.0062 sec