๐Ÿ“‚ ๊ฐœ๋ฐœ ์„œ์ /ํด๋ฆฐ ์ฝ”๋“œ

    ํด๋ฆฐ ์ฝ”๋“œ(Clean Code) - 14์žฅ, 15์žฅ, 16์žฅ, 17์žฅ

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

    ํด๋ฆฐ ์ฝ”๋“œ(Clean Code) - 13์žฅ

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

    ํด๋ฆฐ ์ฝ”๋“œ(Clean Code) - 11์žฅ, 12์žฅ

    11์žฅ. ์‹œ์Šคํ…œ ๐Ÿ“ก Main ๋ถ„๋ฆฌ ์‹œ์Šคํ…œ ์ƒ์„ฑ๊ณผ ์‹œ์Šคํ…œ ์‚ฌ์šฉ์„ ๋ถ„๋ฆฌํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ, ์ƒ์„ฑ๊ณผ ๊ด€๋ จํ•œ ์ฝ”๋“œ๋Š” ๋ชจ๋‘ main์ด๋‚˜ main์ด ํ˜ธ์ถœํ•˜๋Š” ๋ชจ๋“ˆ๋กœ ์˜ฎ๊ธฐ๊ณ , ๋‚˜๋จธ์ง€ ์‹œ์Šคํ…œ์€ ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ๊ณ  ๋ชจ๋“  ์˜์กด์„ฑ์ด ์—ฐ๊ฒฐ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ์ œ์–ด ํ๋ฆ„์„ ๋”ฐ๋ผ๊ฐ€๊ธฐ ์‰ฝ๋‹ค. main ํ•จ์ˆ˜์—์„œ ์‹œ์Šคํ…œ์— ํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ์ด๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋„˜๊ธด๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ทธ์ € ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ๋ฟ์ด๋‹ค. main๊ณผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‚ฌ์ด์— ํ‘œ์‹œ๋œ ์˜์กด์„ฑ ํ™”์‚ดํ‘œ์˜ ๋ฐฉํ–ฅ์— ์ฃผ๋ชฉํ•œ๋‹ค. ๋ชจ๋“  ํ™”์‚ดํ‘œ๊ฐ€ main ์ชฝ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ชฝ์„ ํ–ฅํ•œ๋‹ค. ์ฆ‰, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ main์ด๋‚˜ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ณผ์ •์„ ์ „ํ˜€ ๋ชจ๋ฅธ๋‹ค๋Š” ๋œป์ด๋‹ค. ๋‹จ์ง€ ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ์ ์ ˆํžˆ ์ƒ์„ฑ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. 11์žฅ ๊ฒฐ๋ก  ์‹œ์Šคํ…œ ์—ญ์‹œ ๊นจ๋—ํ•ด์•ผ ํ•œ๋‹ค. ๊นจ๋—ํ•˜์ง€ ๋ชปํ•œ ์•„ํ‚คํ…..

    ํด๋ฆฐ ์ฝ”๋“œ(Clean Code) - 10์žฅ

    10์žฅ. ํด๋ž˜์Šค ๐Ÿ  ์ง€๊ธˆ๊นŒ์ง€ ์ฝ”๋“œ ํ–‰๊ณผ ์ฝ”๋“œ ๋ธ”๋ก์„ ์˜ฌ๋ฐ”๋กœ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ์ดˆ์ ์„ ๋งž์ท„๋‹ค. ํ•จ์ˆ˜๋ฅผ ์˜ฌ๋ฐ”๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ํ•จ์ˆ˜๊ฐ€ ์„œ๋กœ ๊ด€๋ จ์„ ๋งบ๋Š” ๋ฐฉ์‹๋„ ๊ณต๋ถ€ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฝ”๋“œ์˜ ํ‘œํ˜„๋ ฅ๊ณผ ๊ทธ ์ฝ”๋“œ๋กœ ์ด๋ฃจ์–ด์ง„ ํ•จ์ˆ˜์— ์•„๋ฌด๋ฆฌ ์‹ ๊ฒฝ ์“ธ์ง€๋ผ๋„ ์ข€ ๋” ์ฐจ์› ๋†’์€ ๋‹จ๊ณ„๊นŒ์ง€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์œผ๋ฉด ๊นจ๋—ํ•œ ์ฝ”๋“œ๋ฅผ ์–ป๊ธฐ๋Š” ์–ด๋ ต๋‹ค. ์ด ์žฅ์—์„œ๋Š” ๊นจ๋—ํ•œ ํด๋ž˜์Šค๋ฅผ ๋‹ค๋ฃฌ๋‹ค. ํด๋ž˜์Šค๋Š” ์ž‘์•„์•ผ ํ•œ๋‹ค! ์–ผ๋งˆ๋‚˜ ์ž‘์•„์•ผ ํ•˜๋Š”๊ฐ€? ํ•จ์ˆ˜๋Š” ๋ฌผ๋ฆฌ์ ์ธ ํ–‰ ์ˆ˜๋กœ ํฌ๊ธฐ๋ฅผ ์ธก์ •ํ–ˆ๋‹ค. ํด๋ž˜์Šค๋Š” ๋งก์€ ์ฑ…์ž„์œผ๋กœ ์ธก์ •์„ ํ•œ๋‹ค. ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ (Single Responsibility Priciple) SRP๋Š” ํด๋ž˜์Šค๋‚˜ ๋ชจ๋“ˆ์„ ๋ณ€๊ฒฝํ•  ์ด์œ ๊ฐ€ ํ•˜๋‚˜, ๋‹จ ํ•˜๋‚˜๋ฟ์ด์–ด์•ผ ํ•œ๋‹ค๋Š” ์›์น™์ด๋‹ค. ์ด๋Š” '์ฑ…์ž„'์ด๋ผ๋Š” ๊ฐœ๋…์„ ์ •์˜ํ•˜๋ฉฐ ์ ์ ˆํ•œ ํด๋ž˜์Šค ํฌ๊ธฐ๋ฅผ ์ œ์‹œํ•œ๋‹ค. public ..

    ํด๋ฆฐ ์ฝ”๋“œ(Clean Code) - 8์žฅ, 9์žฅ

    8์žฅ. ๊ฒฝ๊ณ„ ๐Ÿ’’ ์‹œ์Šคํ…œ์— ๋“ค์–ด๊ฐ€๋Š” ๋ชจ๋“  ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ง์ ‘ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋“œ๋ฌผ๋‹ค. ๋•Œ๋กœ๋Š” ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ๊ณ , ๋•Œ๋กœ๋Š” ์˜คํ”ˆ ์†Œ์Šค๋ฅผ ์ด์šฉํ•œ๋‹ค. ๋•Œ๋กœ๋Š” ์‚ฌ๋‚ด ๋‹ค๋ฅธ ํŒ€์ด ์ œ๊ณตํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์–ด๋–ค ์‹์œผ๋กœ๋“  ์ด ์™ธ๋ถ€ ์ฝ”๋“œ๋ฅผ ์šฐ๋ฆฌ ์ฝ”๋“œ์— ๊น”๋”ํ•˜๊ฒŒ ํ†ตํ•ฉํ•ด์•ผ๋งŒ ํ•œ๋‹ค. ์ด ์žฅ์—์„œ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฒฝ๊ณ„๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋ฒ•๊ณผ ๊ธฐ๊ต๋ฅผ ์‚ดํŽด๋ณธ๋‹ค. Map์„ (ํ˜น์€ ์œ ์‚ฌํ•œ ๊ฒฝ๊ณ„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ) ์—ฌ๊ธฐ์ €๊ธฐ ๋„˜๊ธฐ์ง€ ๋ง๋ผ. Map sensors = new HashMap(); Sensor s = (Sensor)sensors.get(sensorId); ์œ„์˜ ์ฝ”๋“œ๋Š” ์˜๋„๊ฐ€ ๋ช…ํ™•ํžˆ ๋“œ๋Ÿฌ๋‚˜์ง€ ์•Š๋Š” ๊นจ๋—ํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ์ด๋‹ค. ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ œ๋„ค๋ฆญ์Šค(Generics)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์ด ํฌ๊ฒŒ ๋†’์•„์ง€์ง€๋งŒ Map๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ•„์š”ํ•˜์ง€ ์•Š์€..

    ํด๋ฆฐ ์ฝ”๋“œ(Clean Code) - 7์žฅ

    7์žฅ. ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๐Ÿฐ ๋ฌด์–ธ๊ฐ€ ์ž˜๋ชป๋  ๊ฐ€๋Šฅ์„ฑ์€ ๋Š˜ ์กด์žฌํ•œ๋‹ค. ๋ฌด์–ธ๊ฐ€ ์ž˜๋ชป๋˜๋ฉด ๋ฐ”๋กœ ์žก์„ ์ฑ…์ž„์€ ๋ฐ”๋กœ ์šฐ๋ฆฌ ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ์žˆ๋‹ค. ํ˜ธ์ถœ์ž๋ฅผ ๊ณ ๋ คํ•ด ์˜ˆ์™ธ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๋ผ. // ์ค‘๋ณต์ด ์‹ฌํ•˜์—ฌ ๋‚˜์œ ์ฝ”๋“œ ACMEPort port = new ACMEPort(12); try { port.open(); } catch (DeviceResponseException e) { reportPortError(e); logger.log("Device response exception", e); } catch (ATM1212UnlockedException e) { reportPortError(e); logger.log("Unlock exception", e); } catch (GMXError e) { reportPortError(..

    ํด๋ฆฐ ์ฝ”๋“œ(Clean Code) - 4์žฅ, 5์žฅ, 6์žฅ

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

    ํด๋ฆฐ ์ฝ”๋“œ(Clean Code) - 1์žฅ, 2์žฅ, 3์žฅ

    ์‹ ์€ ์„ธ์„ธํ•จ์— ๊นƒ๋“ค์–ด ์žˆ๋‹ค. ์ฑ…์€ ๊ฐ๊ฐ์˜ ํฐ ์ฃผ์ œ์— ๋Œ€ํ•ด์„œ 17๊ฐœ์˜ ์žฅ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ํ•ด๋‹น ๊ธ€์—์„œ๋Š” ์ฑ…์˜ ๋ชจ๋“  ๋‚ด์šฉ์„ ๋‹ค๋ฃจ์ง€๋Š” ์•Š๋Š”๋‹ค. ํ˜„์žฌ ๋‚˜์—๊ฒŒ ํ•„์š”ํ•œ ๋‚ด์šฉ์ด๊ฑฐ๋‚˜ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ƒ๊ธฐํ•ด์•ผ ํ•˜๋Š” ์ ๋“ค๋งŒ ๋‹ค๋ฃฐ ๊ฒƒ์ด๋ฏ€๋กœ ์ด ์ ์— ๋Œ€ํ•ด์„œ๋Š” ์–‘ํ•ด๋ฅผ ๊ตฌํ•œ๋‹ค. 1์žฅ. ๊นจ๋—ํ•œ ์ฝ”๋“œ ๐ŸŒŠ ์›Œ๋“œ ์ปค๋‹ํ–„(Ward Cunningham)์€ '๊นจ๋—ํ•œ ์ฝ”๋“œ๋Š” ์ฝ์œผ๋ฉด์„œ ๋†€๋ž„ ์ผ์ด ์—†์–ด์•ผ ํ•œ๋‹ค'๋ผ๊ณ  ๋งํ•œ๋‹ค. ์ฝ์œผ๋ฉด์„œ ์ง์ž‘ํ•œ ๋Œ€๋กœ ๋Œ์•„๊ฐ€๋Š” ์ฝ”๋“œ๊ฐ€ ๊นจ๋—ํ•œ ์ฝ”๋“œ๋‹ค. ๊ฐ ๋ชจ๋“ˆ์€ ๋‹ค์Œ ๋ฌด๋Œ€๋ฅผ ์ค€๋น„ํ•˜๊ณ , ๋ชจ๋“ˆ์„ ์ฝ์œผ๋ฉด์„œ ๋‹ค์Œ์— ๋ฒŒ์–ด์งˆ ์ƒํ™ฉ์ด ๋ณด์—ฌ์•ผ ํ•œ๋‹ค. 2์žฅ. ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„ ๐ŸŒผ ์ข‹์€ ์ด๋ฆ„์„ ์ง€์œผ๋ ค๋ฉด ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ์ง€๋งŒ ์ข‹์€ ์ด๋ฆ„์œผ๋กœ ์ ˆ์•ฝํ•˜๋Š” ์‹œ๊ฐ„์ด ํ›จ์”ฌ ๋” ๋งŽ๋‹ค. ์ƒ์„ฑ์ž๋ฅผ ์ค‘๋ณต์ •์˜ํ•  ๋•Œ๋Š” ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ถ”์ƒ์ ์ธ ๊ฐœ๋… ํ•˜..