[Clean Code] 3. ํ•จ์ˆ˜

2023. 9. 26. 16:48ใ†๊ธฐ์ˆ  ์„œ์ /Clean Code

728x90

 

๐Ÿ‘ฉ‍๐Ÿ’ป 2์žฅ. ์˜๋ฏธ์žˆ๋Š” ์ด๋ฆ„ ๋ณด๊ณ , ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด์„œ ์ ์šฉํ•˜๋ ค๊ณ  ๋ณด๋Š”๋ฐ..์™€.. ๋‚˜๋ฆ„ ๋ณ€์ˆ˜๋ช…์ด๋‚˜ ๋ฉ”์„œ๋“œ๋ช… ์ง€์„ ๋•Œ ์ƒ๊ฐํ•˜๊ณ  ์ง€์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์—ˆ๋Š”๋ฐ ๊ฐœํŒ์ด๋‹ค ใ…‹ใ…‹ ์–ด๋””์„œ๋ถ€ํ„ฐ ์–ด๋–ป๊ฒŒ ๊ณ ์ณ์•ผํ• ์ง€.. ^^;; 

์กฐ๊ธˆ์”ฉ ๊ณ ์ณ๊ฐ€์ž..! ๋ผ๋Š” ๋งˆ์ธ๋“œ๋กœ ๋ด์•ผ์ง€.. ๊ทธ๋ฆฌ๊ณ  ์•ž์œผ๋กœ๋Š” ๊ผญ ๋”!!! ์ƒ๊ฐํ•˜๊ณ  ์ด๋ฆ„ ์ง€์„ ๊ฒƒ์ด๋‹ค.. ์•„ ์™„์ „ ํ›„ํšŒ์ค‘ ใ…œ 

1. ๋ณ€์ˆ˜(๋ฉ”์„œ๋“œ ๋˜๋Š” ํด๋ž˜์Šค) ์˜ ์กด์žฌ ์ด์œ ๋Š” ? 
2. ์ˆ˜ํ–‰ ๊ธฐ๋Šฅ์€ ? 
3. ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ? 

์ตœ์†Œํ•œ ์ด 3๊ฐ€์ง€ ์งˆ๋ฌธ์€ ํ•˜๊ณ  ์ด๋ฆ„ ์ง“๊ธฐ ..!!!  ์ด ๊ธ€์„ ๋ณด๋Š” ๋ถ„(?) ๋“ค์€ ์ด๋ ‡๊ฒŒ ํ•˜๊ณ  ๊ณ„์‹ ๊ฐ€์š”..? 

์•„๋ฌดํŠผ.. ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„ ์ง“๊ธฐ๋ฅผ ๊ธฐ์–ตํ•˜๋ฉฐ 3์žฅ ํ•จ์ˆ˜์— ๋Œ€ํ•ด์„œ ์˜ค๋Š˜์€ ๊ณต๋ถ€ํ•  ๊ฒƒ์ด๋‹ค. 

 

 

 

์ž‘๊ฒŒ ๋งŒ๋“ค์–ด๋ผ p.42 
ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ์ฒซ์งธ ๊ทœ์น™์€ '์ž‘๊ฒŒ!' ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘˜์งธ ๊ทœ์น™์€ '๋” ์ž‘๊ฒŒ!'๋‹ค. 


๋ธ”๋ก๊ณผ ๋“ค์—ฌ์“ฐ๊ธฐ 
if/else๋ฌธ, while๋ฌธ ๋“ฑ์— ๋“ค์–ด๊ฐ€๋Š” ๋ธ”๋ก์€ ํ•œ ์ค„์ด์–ด์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ๊ณ  ๋Œ€๊ฐœ ๊ฑฐ๊ธฐ์„œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. 
๊ทธ๋Ÿฌ๋ฉด ๋ฐ”๊นฅ์„ ๊ฐ์‹ธ๋Š” ํ•จ์ˆ˜๊ฐ€ ์ž‘์•„์งˆ ๋ฟ ์•„๋‹ˆ๋ผ, ๋ธ”๋ก ์•ˆ์—์„œ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜ ์ด๋ฆ„์„ ์ ์ ˆํžˆ ์ง“๋Š”๋‹ค๋ฉด ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ๋„ ์‰ฌ์›Œ์ง„๋‹ค. 

ํ•จ์ˆ˜์—์„œ ๋“ค์—ฌ์“ฐ๊ธฐ ์ˆ˜์ค€์€ 1๋‹จ์ด๋‚˜ 2๋‹จ์„ ๋„˜์–ด์„œ๋ฉด ์•ˆ๋œ๋‹ค. ๋‹น์—ฐํ•œ ๋ง์ด์ง€๋งŒ ๊ทธ๋ž˜์•ผ ํ•จ์ˆ˜๋Š” ์ฝ๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›Œ์ง„๋‹ค. 

๐Ÿ‘ฉ‍๐Ÿ’ป ์Œ.. ์ด๊ฑฐ ๊ฐ€๋Šฅํ•œ๊ฐ€ ..? ์‹ถ๋‹ค... ์ •๋ง ๋‹ค ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค์–ด์•ผ ๊ฐ€๋Šฅํ•œ ์ผ์ธ๋ฐ..!!! ์ด๊ฒŒ ๋งž๋Š”๊ฑด๊ฐ€??? ์ผ๋‹จ ๋” ์ฝ์–ด๋ด์•ผ๊ฒ ๋‹ค.. 

์ฑ…์—์„œ ๋‚˜์˜จ ์˜ˆ์ œ๋ฅผ ๋ณด๋ฉด ํ™•์‹คํžˆ ์ฝ”๋“œ๊ฐ€ ์งง์œผ๋‹ˆ๊นŒ ์ดํ•ด๋Š” ์ž˜ ๋˜๊ธด ํ•˜๋Š”๋ฐ.. 

 

 

 

ํ•œ ๊ฐ€์ง€๋งŒ ํ•ด๋ผ ! p.44

 

ํ•จ์ˆ˜๋Š” ํ•œ ๊ฐ€์ง€๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ ํ•œ๊ฐ€์ง€๋ฅผ ์ž˜ ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ ํ•œ ๊ฐ€์ง€๋งŒ์„ ํ•ด์•ผ ํ•œ๋‹ค. 
์ง€์ •๋œ ํ•จ์ˆ˜ ์ด๋ฆ„ ์•„๋ž˜์—์„œ ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ํ•˜๋‚˜์ธ ๋‹จ๊ณ„๋งŒ ์ˆ˜ํ–‰ํ•œ๋‹ค๋ฉด ๊ทธ ํ•จ์ˆ˜๋Š” ํ•œ ๊ฐ€์ง€ ์ž‘์—…๋งŒ ํ•œ๋‹ค. 

ํ•จ์ˆ˜๊ฐ€ 'ํ•œ ๊ฐ€์ง€'๋งŒ ํ•˜๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•˜๋‚˜ ์žˆ๋Š”๋ฐ, ๋‹จ์ˆœํžˆ ๋‹ค๋ฅธ ํ‘œํ˜„์ด ์•„๋‹ˆ๋ผ ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„์œผ๋กœ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ทธ ํ•จ์ˆ˜๋Š” ์—ฌ๋Ÿฌ ์ž‘์—…์„ ํ•˜๋Š” ์…ˆ์ด๋‹ค. 

ํ•œ ๊ฐ€์ง€ ์ž‘์—…๋งŒ ํ•˜๋Š” ํ•จ์ˆ˜๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์„ธ์…˜์„ ๋‚˜๋ˆ„๊ธฐ ์–ด๋ ต๋‹ค. 

 

 

 

ํ•จ์ˆ˜ ๋‹น ์ถ”์ƒํ™” ์ˆ˜์ค€์€ ํ•˜๋‚˜๋กœ ! p.45
ํ•จ์ˆ˜๊ฐ€ ํ™•์‹คํžˆ 'ํ•œ ๊ฐ€์ง€' ์ž‘์—…๋งŒ ํ•˜๋ ค๋ฉด ํ•จ์ˆ˜ ๋‚ด ๋ชจ๋“  ๋ฌธ์žฅ์˜ ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ๋™์ผํ•ด์•ผํ•œ๋‹ค. 
getHtml() ์€ ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ๋†’๋‹ค.
String pagePathName = PathParser.render(pagepath); ๋Š” ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ์ค‘๊ฐ„์ด๋‹ค. 
๊ทธ๋ฆฌ๊ณ  .append("\n") ์™€ ๊ฐ™์€ ์ฝ”๋“œ๋Š” ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ์•„์ฃผ ๋‚ฎ๋‹ค. 
ํ•œ ํ•จ์ˆ˜ ๋‚ด์— ์ด๋ ‡๊ฒŒ ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ์„ž์—ฌ ์žˆ์œผ๋ฉด ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ์‚ฌ๋žŒ์ด ํ—ท๊ฐˆ๋ฆฐ๋‹ค. ํŠน์ • ํ‘œํ˜„์ด ๊ทผ๋ณธ ๊ฐœ๋…์ธ์ง€ ์•„๋‹ˆ๋ฉด ์„ธ๋ถ€ ์‚ฌํ•ญ์ธ์ง€ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์–ด๋ ค์šด ํƒ“์ด๋‹ค. 

๋‚ด๋ ค๊ฐ€๊ธฐ ๊ทœ์น™ 
ํ•œ ํ•จ์ˆ˜ ๋‹ค์Œ์—๋Š” ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ํ•œ ๋‹จ๊ณ„ ๋‚ฎ์€ ํ•จ์ˆ˜๊ฐ€ ์˜จ๋‹ค. ์ฆ‰, ์œ„์—์„œ ์•„๋ž˜๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์ฝ์œผ๋ฉด ํ•จ์ˆ˜ ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ํ•œ ๋ฒˆ์— ํ•œ ๋‹จ๊ณ„์”ฉ ๋‚ฎ์•„์ง„๋‹ค. 

๐Ÿ‘ฉ‍๐Ÿ’ป ํ•จ์ˆ˜๊ฐ€ ํ•œ ๊ฐ€์ง€ ๊ธฐ๋Šฅ๋งŒ ํ•ด์•ผ ํ•œ๋‹ค.. ๋ฌด์Šจ ๋ง์„ ํ•˜๊ณ  ์‹ถ์€์ง€ ์•Œ๊ฒ ๋Š”๋ฐ... ์ถ”์ƒํ™” ์ˆ˜์ค€์„ ๋™์ผ ์‹œ ํ•˜๋Š”๊ฑด ๋„ˆ๋ฌด ์–ด๋ ค์šด ๊ฒƒ ๊ฐ™๋‹ค... ์ด๊ฑธ ์–ด๋–ป๊ฒŒ ํ•œ ์ˆ˜์ค€์œผ๋กœ๋งŒ ์œ ์ง€ํ•˜์ง€..? ๋งŽ์€ ๊ณ ๋ฏผ์ด ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค.. ์˜ˆ์‹œ๊ฐ€ ํ•„์š”ํ•ด ๐Ÿ˜‚

 

 

 

 

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

์ด๋ฆ„์ด ๊ธธ์–ด๋„ ๊ดœ์ฐฎ๋‹ค. ๊ฒ๋จน์„ ํ•„์š”์—†๋‹ค. ๊ธธ๊ณ  ์„œ์ˆ ์ ์ธ ์ด๋ฆ„์ด ์งง๊ณ  ์–ด๋ ค์šด ์ด๋ฆ„๋ณด๋‹ค ์ข‹๋‹ค. ๊ธธ๊ณ  ์„œ์ˆ ์ ์ธ ์ด๋ฆ„์ด ๊ธธ๊ณ  ์„œ์ˆ ์ ์ธ ์ฃผ์„๋ณด๋‹ค ์ข‹๋‹ค. ํ•จ์ˆ˜ ์ด๋ฆ„์„ ์ •ํ•  ๋•Œ๋Š” ์—ฌ๋Ÿฌ ๋‹จ์–ด๊ฐ€ ์‰ฝ๊ฒŒ ์ฝํžˆ๋Š” ๋ช…๋ช…๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค. 
๊ทธ๋Ÿฐ ๋‹ค์Œ, ์—ฌ๋Ÿฌ ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•ด ํ•จ์ˆ˜ ๊ธฐ๋Šฅ์„ ์ž˜ ํ‘œํ˜„ํ•˜๋Š” ์ด๋ฆ„์„ ์„ ํƒํ•œ๋‹ค. 

์„œ์ˆ ์ ์ธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž ๋จธ๋ฆฟ์†์—์„œ๋„ ์„ค๊ณ„๊ฐ€ ๋šœ๋ ทํ•ด์ง€๋ฏ€๋กœ ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์‰ฌ์›Œ์ง„๋‹ค. 

์ด๋ฆ„์„ ๋ถ™์ผ ๋•Œ๋Š” ์ผ๊ด€์„ฑ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋ชจ๋“ˆ ๋‚ด์—์„œ ํ•จ์ˆ˜ ์ด๋ฆ„์€ ๊ฐ™์€ ๋ฌธ๊ตฌ, ๋ช…์‚ฌ, ๋™์‚ฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

๐Ÿ‘ฉ‍๐Ÿ’ป : ์–ด์ œ ์˜๋ฏธ์žˆ๋Š” ์ด๋ฆ„์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ฒ ๋‹ค๊ณ  ๋ฉ”์„œ๋“œ๋ช…๋„ ์ข€ ๋ณด๋Š”๋ฐ ์ด๋ฆ„์ด ์ ์  ๊ธธ์–ด์ ธ์„œ ๊ฒฐ๊ตญ ํฌ๊ธฐํ–ˆ๋˜ ๋ฉ”์„œ๋“œ๋ช…๋“ค์ด ๋ช‡๊ฐœ ์žˆ๋‹ค.. ์ด๊ฑฐ ๊ทธ๋ƒฅ ํ•œ ๋ฒˆ ์ฝ๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋„๋ก ๋ณ€๊ฒฝํ•ด์•ผ ๊ฒ ๋‹ค. 

 

 

 

ํ•จ์ˆ˜ ์ธ์ˆ˜ p.50
ํ•จ์ˆ˜์—์„œ ์ด์ƒ์ ์ธ ์ธ์ˆ˜ ๊ฐœ์ˆ˜๋Š” 0๊ฐœ (๋ฌดํ•ญ) ์ด๋‹ค. ๋‹ค์Œ์€ 1๊ฐœ(๋‹จํ•ญ)๊ณ , ๋‹ค์Œ์€ 2๊ฐœ(์ดํ•ญ)๋‹ค. 3๊ฐœ(์‚ผํ•ญ)์€ ๊ฐ€๋Šฅํ•œ ํ”ผํ•˜๋Š” ํŽธ์ด ์ข‹๋‹ค!!! 
์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ์‚ฌ๋žŒ์—๊ฒŒ๋Š” inlcudeSetupPageInfo(new PageContent) ๋ณด๋‹ค includeSetupPage()๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ๋” ์‰ฝ๋‹ค. 

ํ…Œ์ŠคํŠธ ๊ด€์ ์—์„œ ๋ณด๋ฉด ์ธ์ˆ˜๋Š” ๋” ์–ด๋ ต๋‹ค. ๊ฐ–๊ฐ€์ง€ ์ธ์ˆ˜ ์กฐํ•ฉ์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•œ๋‹ค๊ณ  ์ƒ์ƒํ•ด๋ณด๋ผ! ์ธ์ˆ˜๊ฐ€ ์—†๋‹ค๋ฉด ๊ฐ„๋‹จํ•˜๋‹ค. ์ธ์ˆ˜๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ๊ดœ์ฐฎ๋‹ค. ์ธ์ˆ˜๊ฐ€ 2๊ฐœ๋ฉด ์กฐ๊ธˆ ๋ณต์žกํ•ด์ง„๋‹ค. 

์ตœ์„ ์€ ์ž…๋ ฅ ์ธ์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์ด๋ฉฐ, ์ฐจ์„ ์€ ์ž…๋ ฅ ์ธ์ˆ˜๊ฐ€ 1๊ฐœ๋ฟ์ธ ๊ฒฝ์šฐ๋‹ค. 

๋งŽ์ด ์“ฐ๋Š” ๋‹จํ•ญ ํ˜•์‹ 
ํ•จ์ˆ˜์— ์ธ์ˆ˜ 1๊ฐœ๋ฅผ ๋„˜๊ธฐ๋Š” ์ด์œ ๋Š” ๊ฐ€์žฅ ํ”ํ•œ ๊ฒฝ์šฐ๋Š” ๋‘ ๊ฐ€์ง€๋‹ค. ํ•˜๋‚˜๋Š” ์ธ์ˆ˜์— ์งˆ๋ฌธ์„ ๋˜์ง€๋Š” ๊ฒฝ์šฐ, boolean fileExists("MyFile") ์ด ์ข‹์€ ์˜ˆ๋‹ค. ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์ธ์ˆ˜๋ฅผ ๋ญ”๊ฐ€๋กœ ๋ณ€ํ™˜ํ•ด ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ๋‹ค. 
InputStream fileOpen("MyFile") ์€ String ํ˜•์˜ ํŒŒ์ผ ์ด๋ฆ„์„ InputStream ์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ์ด๋“ค ๋‘ ๊ฒฝ์šฐ๋Š” ๋…์ž๊ฐ€ ๋‹น์—ฐํ•˜๊ฒŒ ๋ฐ›์•„๋“ค์ธ๋‹ค. ํ•จ์ˆ˜ ์ด๋ฆ„์„ ์ง€์„ ๋•Œ๋Š” ๋‘ ๊ฒฝ์šฐ๋ฅผ ๋ถ„๋ช…ํžˆ ๊ตฌ๋ถ„ํ•ด์•ผ ํ•œ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  ๋‹ค์†Œ ๋“œ๋ฌผ๊ฒŒ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋‹จํ•ญ ํ•จ์ˆ˜ ํ˜•์‹์œผ๋กœ ์ด๋ฒคํŠธ๊ฐ€ ์žˆ๋‹ค. ์ด๋ฒคํŠธ ํ•จ์ˆ˜๋Š” ์ž…๋ ฅ ์ธ์ˆ˜๋งŒ ์žˆ๊ณ  ์ถœ๋ ฅ ์ธ์ˆ˜๋Š” ์—†๋‹ค. ํ”„๋กœ๊ทธ๋žจ์€ ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ์ด๋ฒคํŠธ๋กœ ํ•ด์„ํ•ด ์ž…๋ ฅ ์ธ์ˆ˜๋กœ ์‹œ์Šคํ…œ ์ƒํƒœ๋ฅผ ๋ฐ”๊พผ๋‹ค. passwordAttempFailedNtimes(int attemps) ๊ฐ€ ์ข‹์€ ์˜ˆ๋‹ค. ์ด๋ฒคํŠธ ํ•จ์ˆ˜๋Š” ์กฐ์‹ฌํ•ด์„œ ์‚ฌ์šฉํ•˜๊ณ , ์ด๋ฒคํŠธ๋ผ๋Š” ์‚ฌ์‹ค์ด ์ฝ”๋“œ์— ๋ช…ํ™•ํžˆ ๋“œ๋Ÿฌ๋‚˜์•ผ ํ•œ๋‹ค. 

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

์ดํ•ญ ํ•จ์ˆ˜ 
์ธ์ˆ˜๊ฐ€ 2๊ฐœ์ธ ํ•จ์ˆ˜๋Š” ์ธ์ˆ˜๊ฐ€ 1๊ฐœ์ธ ํ•จ์ˆ˜๋ณด๋‹ค ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต๋‹ค. writeField(name)๊ณผ writeField(outputStream, name) ๋‘˜ ๋‹ค ์‰ฝ๊ฒŒ ์ฝํžˆ๊ธฐ๋Š” ํ•˜์ง€๋งŒ ์ „์ž๊ฐ€ ๋” ์‰ฝ๊ฒŒ ์ฝํžˆ๊ณ  ๋” ๋นจ๋ฆฌ ์ดํ•ด๊ฐ€ ๋œ๋‹ค. 

๋ฌผ๋ก  ์ดํ•ญ ํ•จ์ˆ˜๊ฐ€ ๋” ์ ์ ˆํ•œ ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค. Point p = new Point(0,0); ์ด ์ข‹์€ ์˜ˆ์ด๋‹ค. 

์ดํ•ญ ํ•จ์ˆ˜๊ฐ€ ๋ฌด์กฐ๊ฑด ๋‚˜์˜๋‹ค๋Š” ์†Œ๋ฆฌ๋Š” ์•„๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์„ ์งœ๋‹ค๋ณด๋ฉด ๋ถˆ๊ฐ€ํ”ผํ•œ ๊ฒฝ์šฐ๋„ ์ƒ๊ธด๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋งŒํผ ์œ„ํ—˜์ด ๋”ฐ๋ฅธ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ดํ•ดํ•˜๊ณ  ๊ฐ€๋Šฅํ•˜๋ฉด ๋‹จํ•ญ ํ•จ์ˆ˜๋กœ ๋ฐ”๊พธ๋„๋ก ์• ์จ์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด writeField ๋ฉ”์„œ๋“œ๋ฅผ outputStream ํด๋ž˜์Šค ๊ตฌ์„ฑ์›์œผ๋กœ ๋งŒ๋“ค์–ด OutputStream.wirteFiled(name)์œผ๋กœ ํ˜ธ์ถœํ•œ๋‹ค. ์•„๋‹ˆ๋ฉด outputStream์„ ํ˜„์žฌ ํด๋ž˜์Šค ๊ตฌ์„ฑ์› ๋ณ€์ˆ˜๋กœ ๋งŒ๋“ค์–ด ์ธ์ˆ˜๋กœ ๋„˜๊ธฐ์ง€ ์•Š๋Š”๋‹ค. ์•„๋‹ˆ๋ฉด FieldWriter๋ผ๋Š” ์ƒˆ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ๊ตฌ์„ฑ์ž์—์„œ outputStream์„ ๋ฐ›๊ณ  write ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. 


์‚ผํ•ญ ํ•จ์ˆ˜ 
์ธ์ˆ˜๊ฐ€ 3๊ฐœ์ธ ํ•จ์ˆ˜๋Š” ์ธ์ˆ˜๊ฐ€ 2๊ฐœ์ธ ํ•จ์ˆ˜๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต๋‹ค. ์ˆœ์„œ, ์ฃผ์ถค, ๋ฌด์‹œ๋กœ ์•ผ๊ธฐ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋‘ ๋ฐฐ ์ด์ƒ ๋Š˜์–ด๋‚œ๋‹ค. ๊ทธ๋ž˜์„œ ์‚ผํ•ญ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค ๋•Œ๋Š” ์‹ ์ค‘ํžˆ ๊ณ ๋ คํ•˜๋ผ ๊ถŒ๊ณ ํ•œ๋‹ค. 

์ธ์ˆ˜ ๊ฐ์ฒด 
์ธ์ˆ˜๊ฐ€ 2~3๊ฐœ ํ•„์š”ํ•˜๋‹ค๋ฉด ์ผ๋ถ€๋กœ ๋…์ž์ ์ธ ํด๋ž˜์Šค ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•  ๊ฐ€๋Šฅ์„ฑ์„ ์งš์–ด๋ณธ๋‹ค. 
Circle makeCircle(double x, double y, double radius); 
-> Circle makeCircle(Point center, double radius); 

๋™์‚ฌ์™€ ํ‚ค์›Œ๋“œ 
ํ•จ์ˆ˜์˜ ์˜๋„๋‚˜ ์ธ์ˆ˜์˜ ์ˆœ์„œ์™€ ์˜๋„๋ฅผ ์ œ๋Œ€๋กœ ํ‘œํ˜„ํ•˜๋ ค๋ฉด ์ข‹์€ ํ•จ์ˆ˜ ์ด๋ฆ„์ด ํ•„์ˆ˜๋‹ค. 
๋‹จํ•ญ ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜์™€ ์ธ์ˆ˜๊ฐ€ ๋™์‚ฌ/๋ช…์‚ฌ ์Œ์„ ์ด๋ค„์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด writeField(name)๋Š” name์ด Field๋ผ๋Š” ์‚ฌ์‹ค์ด ๋ถ„๋ช…ํžˆ ๋“œ๋Ÿฌ๋‚œ๋‹ค. 

๋งˆ์ง€๋ง‰ ์˜ˆ์ œ๋Š” ํ•จ์ˆ˜ ์ด๋ฆ„์— ํ‚ค์›Œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ํ˜•์‹์ด๋‹ค. ์ฆ‰, ํ•จ์ˆ˜ ์ด๋ฆ„์— ์ธ์ˆ˜ ์ด๋ฆ„์„ ๋„ฃ๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด assertEquals๋ณด๋‹ค assertExpectedEqualsAcutal(expected, actual)์ด ๋” ์ข‹๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ธ์ˆ˜ ์ˆœ์„œ๋ฅผ ๊ธฐ์–ตํ•  ํ•„์š”๊ฐ€ ์—†์–ด์ง„๋‹ค. 

๐Ÿ‘ฉ‍๐Ÿ’ป ์˜ˆ์ „์— ๋‹ค๋ฅธ ๋ถ„์ด ๋งค๊ฐœ๋ณ€์ˆ˜ ๋„ˆ๋ฌด ๋งŽ์ด ๋งŒ๋“ค์ง€๋ง๋ผ๊ณ  ํ•˜๋Š” ๊ฑธ ๋“ค์€ ์ ์ด ์žˆ๋Š”๋ฐ ์ด ๋‚ด์šฉ์„ ๋ณด๊ณ  ๋ฐ”๋กœ ๋– ์˜ฌ๋ž๋‹ค...! 

๊ทธ๋ž˜์„œ ์š”์ฆ˜์€ ์ตœ๋Œ€ํ•œ ์ค„์—ฌ์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์ธ์ˆ˜๊ฐ€ 0๊ฐœ ?!! ์ด๊ฑฐ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜..! ๋ถˆ๊ฐ€ํ”ผํ•˜๋‹ค๋ฉด 1๊ฐœ๋ผ๋‹ˆ.... 

์Šคํ”„๋ง์—์„œ ์ด๊ฑฐ ๊ฐ€๋Šฅํ•œ๊ฐ€์š”... ? ๊ถ๊ธˆํ•˜๋‹ค... ์ด๋Ÿฐ ์˜ˆ์‹œ๋ฅผ ํ•œ๋ฒˆ๋„ ๋ชป๋ด์„œ... ์•„๋ฌดํŠผ... ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ค„์—ฌ๋ณด๊ธฐ๋กœ ํ•˜๊ณ ,,, ๋‹น์žฅ ํ”Œ๋ž˜๊ทธ ํ•จ์ˆ˜๋Š” ์—†์• ๋„๋ก ํ•˜์ž. 

 

 

 

๋ถ€์ˆ˜ ํšจ๊ณผ๋ฅผ ์ผ์œผํ‚ค์ง€ ๋งˆ๋ผ! p.54
๋ถ€์ˆ˜ ํšจ๊ณผ๋Š” ๊ฑฐ์ง“๋ง์ด๋‹ค. ํ•จ์ˆ˜์—์„œ ํ•œ ๊ฐ€์ง€๋ฅผ ํ•˜๊ฒ ๋‹ค๊ณ  ์•ฝ์†ํ•˜๊ณ ์„  ๋‚จ๋ชฐ๋ž˜ ๋‹ค๋ฅธ ์ง“๋„ ํ•˜๋‹ˆ๊นŒ. ๋•Œ๋กœ๋Š” ์˜ˆ์ƒ์น˜ ๋ชปํ•˜๊ฒŒ ํด๋ž˜์Šค ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค. ๋•Œ๋กœ๋Š” ํ•จ์ˆ˜๋กœ ๋„˜์–ด์˜จ ์ธ์ˆ˜๋‚˜ ์‹œ์Šคํ…œ ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค. ์–ด๋Š์ชฝ์ด๋“  ๊ตํ™œํ•˜๊ณ  ํ•ด๋กœ์šด ๊ฑฐ์ง“๋ง์ด๋‹ค. 

 

 

 

๋ช…๋ น๊ณผ ์กฐํšŒ๋ฅผ ๋ถ„๋ฆฌํ•˜๋ผ ! p.56
ํ•จ์ˆ˜๋Š” ๋ญ”๊ฐ€๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ๋ญ”๊ฐ€์— ๋‹ต์„ ํ•˜๊ฑฐ๋‚˜ ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ ํ•ด์•ผ ํ•œ๋‹ค. ๋‘˜ ๋‹ค ํ•˜๋ฉด ์•ˆ๋œ๋‹ค. 
๊ฐ์ฒด ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์•„๋‹ˆ๋ฉด ๊ฐ์ฒด ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜ ๋‘˜ ์ค‘ ํ•˜๋‚˜๋‹ค. ๋‘˜๋‹ค ํ•˜๋ฉด ํ˜ผ๋ž€์„ ์ค€๋‹ค. 

public boolean set(String attribute, String value); 
-> ์ด ํ•จ์ˆ˜๋Š” ์ด๋ฆ„์ด attribute์ธ ์†์„ฑ ๊ฐ’์„ ์ฐพ์•„ value๋กœ ๊ฐ’์„ ์„ค์ •ํ•œ ํ›„ ์„ฑ๊ณตํ•˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์‹คํŒจํ•˜๋ฉด false๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 
if (set ("username", "unclebbb"))  .. 
-> ๋…์ž ์ž…์žฅ์—์„œ ์ด ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด "username"์ด "unclebbb"๋กœ ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์ฝ”๋“œ์ธ์ง€ ์•„๋‹ˆ๋ฉด "username"์„ "uncelbbb"๋กœ ์„ค์ •ํ•˜๋Š” ์ฝ”๋“œ์ธ์ง€ ์˜๋ฏธ๊ฐ€ ๋ชจํ˜ธํ•ด ํ—ท๊ฐˆ๋ฆฐ๋‹ค. 

"set" ์ด๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ๋™์‚ฌ์ธ์ง€ ํ˜•์šฉ์‚ฌ์ธ์ง€ ๋ถ„๊ฐ„ํ•˜๊ธฐ ์–ด๋ ค์šด ํƒ“์ด๋‹ค. 
ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐœ๋ฐœ์ž๋Š” ๋™์‚ฌ๋กœ ์˜๋„ํ–ˆ์ง€๋งŒ if๋ฌธ์— ๋„ฃ๊ณ  ๋‚˜๋‹ˆ ํ˜•์šฉ์‚ฌ๋กœ ๋Š๊ปด์ง„๋‹ค. 
๋”ฐ๋ผ์„œ ์ง„์งœ ํ•ด๊ฒฐ์ฑ…์€ 
if(attributeExists("username")) {
   setAttribute("username", "unclebob");
   ...
} ์ด์ฒ˜๋Ÿผ ๋ช…๋ น๊ณผ ์กฐํšŒ๋ฅผ ๋ถ„๋ฆฌํ•ด ํ˜ผ๋ž€์„ ์• ์ดˆ์— ๋ฟŒ๋ฆฌ ๋ฝ‘๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. 

 

 

 

์˜ค๋ฅ˜ ์ฝ”๋“œ๋ณด๋‹ค ์˜ˆ์™ธ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ ! p.57 
try {
  deletePage(page);
  registry.deleteReference(page.name);
  configKey.deleteKey(page.name.makeKey());
} catch(Exception e) {
   logger.log(e.getMessage);
}

-> ์—ฌ๊ธฐ์„œ try/Catch ๋ธ”๋ก ๋ฝ‘์•„๋‚ด์ž. 
try/catch ๋ธ”๋ก์€ ์›๋ž˜ ์ถ”ํ•˜๋‹ค. ์ฝ”๋“œ ๊ตฌ์กฐ์— ํ˜ผ๋ž€์„ ์ผ์œผํ‚ค๋ฉฐ ์ •์ƒ ๋™์ž‘๊ณผ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๋™์ž‘์„ ๋’ค์„ž๋Š”๋‹ค. 
try/catch ๋ธ”๋ก๋„ ๋ณ„๋„ ํ•จ์ˆ˜๋กœ ๋ฝ‘์•„๋‚ด๋Š” ํŽธ์ด ์ข‹๋‹ค. 

public void delete(Page page) {
  try { 
    deletePageAndAllReference(page);
 } catch(Exception e) 
    logError(e);


public void deletePageAndAllReferences(Page page) throws Exception {
///


public void logError(Exception e)  { 
  logger.log(e.getMessage());
}

-> delete ๋ฉ”์„œ๋“œ๊ฐ€ ๋ชจ๋“  ์˜ค๋ฅ˜๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์„œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๋„ ํ•œ ๊ฐ€์ง€ ์ž‘์—…์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜๋Š” ์˜ค๋ฅ˜๋งŒ ์ฒ˜๋ฆฌํ•ด์•ผ ๋งˆ๋•…ํ•˜๋‹ค. ํ•จ์ˆ˜์— ํ‚ค์›Œ๋“œ๊ฐ€ try๊ฐ€ ์žˆ๋‹ค๋ฉด ํ•จ์ˆ˜๋Š” try ๋ฌธ์œผ๋กœ ์‹œ์ž‘ํ•ด์„œ catch/finally๋ฌธ์œผ๋กœ ๋๋‚˜์•ผ ํ•œ๋‹ค. 

 

 

 

 ๋ฐ˜๋ณตํ•˜์ง€ ๋งˆ๋ผ! p.60 
์ค‘๋ณต์€ ๋ฌธ์ œ๋‹ค. ์ฝ”๋“œ ๊ธธ์ด๊ฐ€ ๋Š˜์–ด๋‚  ๋ฟ ์•„๋‹ˆ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋ณ€ํ•˜๋ฉด ๋„ค ๊ณณ์ด๋‚˜ ์†๋ด์•ผ ํ•˜๋‹ˆ๊นŒ..!! ๊ฒŒ๋‹ค๊ฐ€ ์–ด๋Š ํ•œ ๊ณณ์ด๋ผ๋„ ๋น ๋œจ๋ฆฌ๋Š” ๋ฐ”๋žŒ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ํ™•๋ฅ ๋„ 4๋ฐฐ๋‚˜ ๋†’๋‹ค. 

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ฝ”๋“œ๋ฅผ ๋ถ€๋ชจ ํด๋ž˜์Šค๋กœ ๋ชฐ์•„ ์ค‘๋ณต์„ ์—†์•ค๋‹ค. 

 

 

 

ํ•จ์ˆ˜๋ฅผ ์–ด๋–ป๊ฒŒ ์งœ์ฃ ?  p.61
์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์งœ๋Š” ํ–‰์œ„๋Š” ์—ฌ๋Š ๊ธ€์ง“๊ธฐ์™€ ๋น„์Šทํ•˜๋‹ค. ๋…ผ๋ฌธ์ด๋‚˜ ๊ธฐ์‚ฌ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๋Š” ๋จผ์ € ์ƒ๊ฐ์„ ๊ธฐ๋กํ•œ ํ›„ ์ฝ๊ธฐ ์ข‹๊ฒŒ ๋‹ค๋“ฌ๋Š”๋‹ค. ์ดˆ์•ˆ์€ ๋Œ€๊ฐœ ์„œํˆฌ๋ฅด๊ณ  ์–ด์ˆ˜์„ ํ•˜๋ฏ€๋กœ ์›ํ•˜๋Š” ๋Œ€๋กœ ์ฝํž ๋•Œ๊นŒ์ง€ ๋ง์„ ๋‹ค๋“ฌ๊ณ  ๋ฌธ์žฅ์„ ๊ณ ์น˜๊ณ  ๋ฌธ๋‹จ์„ ์ •๋ฆฌํ•œ๋‹ค. 

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

๐Ÿ‘ฉ‍๐Ÿ’ป 3์žฅ ํ•จ์ˆ˜๋ฅผ ์ฝ๊ณ  ๋˜๊ฒŒ ๋Š๋‚€ ์ ์€ ๋˜๊ฒŒ ๋ง‰๋ง‰ํ•˜๋‹ค.. ์˜€๋Š”๋ฐ ์™œ๋ƒํ•˜๋ฉด ๋‚ด๊ฐ€ ์ง  ๊ฑฐ ๋‹ค ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ์ˆ˜์ค€์ผ ๊ฒƒ ๊ฐ™์•„์„œ.... 

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

์ด๋Ÿฐ์‹์œผ๋กœ ํ•ด ๋‚˜์•„๊ฐ€๋ฉด ๋  ๊ฒƒ์ด๋‹ค... !!! 

 

 

 

 

 

 

 

 

 

 

728x90