Inflearn brand logo image
Inflearn brand logo image
์ฑ„๋„ํ†ก ์•„์ด์ฝ˜

ํ‡ด๊ทผ์€ ๋น ๋ฅด๊ฒŒ, ์ฝ”๋“œ๋Š” ํด๋ฆฐํ•˜๊ฒŒ, ์ธํ…”๋ฆฌJ๋ฅผ ํ™œ์šฉํ•œ ๋ฆฌํŒฉํ† ๋ง ์‹œ์ž‘ํ•˜๊ธฐ(with ๋‹จ์ถ•ํ‚ค) - ๊ธฐ์ดˆํŽธ

๋ง‰์—ฐํ•˜๊ฒŒ ๋ฆฌํŒฉํ† ๋ง์ด๋ผ๋Š” ์šฉ์–ด๋Š” ๋“ค์—ˆ์ง€๋งŒ, Intellj IDEA์—๋””ํ„ฐ๋ฅผ ํ™œ์šฉํ•ด์„œ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•˜๋Š” ๋ฐฉ๋ฒ• ๋ชจ๋ฅด๋Š” ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•ด์„œ ๋น ๋ฅด๊ฒŒ ํ•™์Šตํ• ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

Thumbnail

์ดˆ๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด, ๊ฐœ๋ฐœ ๋„๊ตฌ] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • ์‹ค์Šต์„ ํ†ตํ•ด refactor๊ธฐ๋Šฅ์„ ์กฐํ•ฉํ•ด์„œ ์•ˆ์ „ํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ๊ณ ์น˜๋Š” ๋ฒ•์„ ๋ฐฐ์›Œ์š”.

  • IntelliJ IDEA์— ์žˆ๋Š” ๋ฆฌํŒฉํ† ๋ง์„ ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•˜๋Š” ๋ฒ•์„ ๋ฐฐ์›Œ์š”.

  • ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ๊ฐ๊ฐ refactor ๊ธฐ๋ฒ•์ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š” ๋ฐฐ์›Œ์š”.

์ด๋Ÿฐ ๋ถ„๋“ค์—๊ฒŒ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. 

  • ์ž๋ฐ” ๊ฐœ๋ฐœ์„ ์ฒ˜์Œ ์‹œ์ž‘ํ•œ 2, 3๋…„์ฐจ ๊ฐœ๋ฐœ์ž
  • ๋ฆฌํŒฉํ† ๋ง์ด๋ผ๋Š” ์šฉ์–ด๋Š” ๋“ค์–ด๋ดค์ง€๋งŒ ์–ด๋–ป๊ฒŒ ์ ์šฉํ•ด์•ผ ํ• ์ง€ ๋ง‰์—ฌํ•œ ๊ฐœ๋ฐœ์ž
  • ๋ฆฌํŒฉํ† ๋ง ๊ธฐ๋ฒ•์€ ์ฑ…์œผ๋กœ ๋ฐฐ์› ์œผ๋‚˜ ์ด ๊ธฐ๋ฒ•๋“ค์„ ์–ด๋–ป๊ฒŒ ์—ฐ๊ฒฐํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋Š”๊ฒŒ ์ข‹์„์ง€ ๋ชจ๋ฅด๋Š” ๊ฐœ๋ฐœ์ž

์ˆ˜๊ฐ•์ƒ์˜ ๊ณ ๋ฏผ & ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  • ๊ณ ์ณ์•ผ ํ•˜๋Š” ์ฝ”๋“œ๋Š” ๋งŽ๊ณ , ๋ณต์žกํ•ด์„œ ์–ด๋””๋ถ€ํ„ฐ ์†์„ ๋Œ€์•ผ ํ• ์ง€ ๋ชจ๋ฅผ๋•Œ...
  • IDEA์—๋””ํ„ฐ์˜ ๊ฐ„๋‹จํ•œ refactor๊ธฐ๋ฒ•์€ ๋“ค์–ด๋Š” ๋ดค๋Š”๋ฐ...์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜์ง€๋Š” ๋ชจ๋ฅผ๋•Œ...
  • ์ด ๊ฐ•์˜์— ์„ค๋ช…๋œ ๊ฐ๊ฐ์˜ refactor๊ธฐ๋ฒ•์˜ ๋™์ž‘ ๋ฐฉ์‹์„ ๋ณด๊ณ , ์‹ค์Šต ํ•ญ๋ชฉ์„ ๋”ฐ๋ผํ•ด ๋ณด๋ฉด  ๊ณ ๋ฏผ ํ•ด๊ฒฐ !!!! 

์ด ๊ฐ•์˜์—์„œ ๋ฐฐ์šฐ๋Š” ๊ฒƒ๋“ค โœจ

์ง€๊ธˆ ์ž‘์„ฑ ์ค‘์ธ Java์ฝ”๋“œ๋ฅผ ๋น ๋ฅด๊ณ  ์•ˆ์ „ํ•˜๊ณ  ์‰ฝ๊ฒŒ ๊ณ ์น˜๋ ค๋ฉด ์•„๋ž˜์˜ ๋ฆฌํŒฉํ† ๋ง ๊ธฐ๋ฒ•์€ ๊ผญ!!!! ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Introduce Variable (๋ณ€์ˆ˜๋กœ ๋นผ๊ณ )
  • Extract Method (๋ฉ”์†Œ๋“œ๋กœ ๋นผ๊ณ )
  • Change Signature (๋ฉ”์†Œ๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ )
  • Extract Delegate (๊ฐ์ฒด๋กœ ๋นผ๊ณ )
  • Introduce Parameter Object (ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ถˆ๋ณ€๊ฐ์ฒด๋กœ ๋งŒ๋“ค๊ณ )
  • Move Instance Method (๋ฉ”์†Œ๋“œ๋ฅผ ์ด๋™ํ•˜๊ณ )
  • Replace Inheritance With Delegate (์ƒ์† ๊ด€๊ณ„๋ฅผ ๋Š๋Š” ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค.)

์ด ๊ฐ•์˜์—์„œ๋Š” ์œ„์—์„œ ์–ธ๊ธ‰๋œ ๊ฐ ๋ฆฌํŒฉํ† ๋ง ๊ธฐ๋ฒ•์„ ๋ชจ๋‘ ๋ฐฐ์šฐ๊ฒŒ ๋˜๋ฉฐ,

์‹ค์Šต์„ ํ†ตํ•ด ๊ฐ ๋ฆฌํŒฉํ† ๋ง ๊ธฐ๋ฒ•๋“ค์„ ํ™œ์šฉํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์•ˆ์ „ํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค ๋“œ๋ฆฝ๋‹ˆ๋‹ค.


ํ•™์Šต ๋‚ด์šฉ ๐Ÿ“š

๋ฆฌํŒฉํ† ๋ง์„ ํ†ตํ•ด ์ฝ”๋“œ๊ฐ€ ์ง„ํ™” ํ•˜๋Š” ๊ฒฝํ—˜์„ ํ•ด๋ณด์„ธ์š”. !!!!!

์•„๋ž˜์™€ ๊ฐ™์ด ๋์ž„ ์—†๋Š” if๋ฌธ์„ ์ˆ˜์ •ํ•ด ๋ณธ ๊ฒฝํ—˜์ด ์žˆ์œผ์‹ ๊ฐ€์š”?

IntelliJ IDEA์—์„œ ์ง€์›๋˜๋Š” refactor๋ฅผ ์ด์šฉํ•˜๋ฉด,  ๋ช‡๋ฒˆ์˜ ์ˆ˜์ •์„ ํ†ตํ•ด์„œ... ์•„๋ž˜์™€ ๊ฐ™์ด ์ง„ํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


์˜ˆ์ƒ ์งˆ๋ฌธ Q&A ๐Ÿ’ฌ

Q. ์™œ IntelliJ IDEA refactor ๊ธฐ๋Šฅ์„ ๋ฐฐ์›Œ์•ผ ํ•˜๋‚˜์š”?
A. ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ• ๋•Œ, ๋‹จ์ˆœํžˆ "์ฐพ์•„ ๋ฐ”๊พธ๊ธฐ"ํ•ด์„œ ๋ฐ”๊ฟ€์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋” ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ Java ์—๋””ํ„ฐ ๋ณ„๋กœ ์ด๋ฆ„์€ ๋‹ค๋ฅด์ง€๋งŒ ๋ฆฌํŒฉํ† ๋ง ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. refactor ๊ธฐ๋ฒ•์„ ์Šต๋“ํ•˜๊ฒŒ ๋˜๋ฉด, ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋Š”๋ฐ ๋งŽ์€ ์–ด๋ ค์›€์ด ์—†์–ด ์งˆ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ผญ ๋ฐฐ์›Œ์•ผ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.  

Q. ๋น„ ์ „๊ณต์ž๋„ ๋“ค์„ ์ˆ˜ ์žˆ๋‚˜์š”?
A. ๋„ค, ์„ ์ˆ˜ ์ง€์‹์„ ์–ด๋Š์ •๋„ ๊ฐ–์ถ”์…จ๋‹ค๋ฉด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ์—ด์ •์ด ์žˆ๋‹ค๋ฉด ์ „๊ณต ์œ ๋ฌด๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์•„์š”. :) ํ•˜์ง€๋งŒ, ์•„์ฃผ ๊ธฐ์ดˆ์ ์ธ ๊ฐœ๋ฐœ๊ฒฝํ—˜์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ์ดํ•ดํ•˜๋Š”๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋ ต๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด ํ˜ผ์ž ๊ณ ๋ฏผํ•˜์ง€ ๋งˆ์‹œ๊ณ , ์–ธ์ œ๋“  ๋ฌธ์˜ ์ฃผ์„ธ์š” :)

Q. ํŠน์ • ํ”Œ๋žซํผ์— ์ข…์†์ ์ธ ๊ฐ•์˜ ์ธ๊ฐ€์š”? 
A. ๋„ค, ๋งŽ์€ ๋ฉ”์ด์ ธ ํšŒ์‚ฌ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Java ์—๋””ํ„ฐ ํ”„๋กœ๊ทธ๋žจ์ธ IntelliJ IDEA์—์„œ ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์†Œ๊ฐœ ํ•˜๊ณ  ์žˆ๊ณ , MacOSํ™˜๊ฒฝ์—์„œ ๊ฐ•์˜๋ฅผ ๊ตฌ์„ฑํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ํ”Œ๋žซํผ์— ์ข…์†์ ์ผ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, Windows์‚ฌ์šฉ์ž๋“ค์„ ์œ„ํ•ด์„œ ๋‹จ์ถ•ํ‚ค ๊ฐ™์€ ๊ฒฝ์šฐ ๋…นํ™”๋œ ํ™”๋ฉด์— ํ‘œ์‹œํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋ผ ํ•˜๋Š”๋ฐ๋Š” ์ „ํ˜€ ๋ฌธ์ œ๊ฐ€ ์—†์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”!

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • ์ฒ˜์Œ ๋ฆฌํŒฉํ† ๋ง ๊ธฐ๋ฒ•์„ ์ ์šฉํ•ด ๋ณด๋Š”๋ฐ ์–ด๋ ค์›€์ด ์žˆ๋Š” ์ดˆ,์ค‘๊ธ‰ ๊ฐœ๋ฐœ์ž

  • ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๊ณ ๋ฏผ์ด ๋งŽ์€ ๊ฐœ๋ฐœ์ž

  • ์„ค๊ณ„๋ฅผ ํ•  ๋•Œ ๋ฐ”๋กœ Java ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝ ํ•˜๋ฉด์„œ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์€ ๊ฐœ๋ฐœ์ž

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • Java ๊ธฐ์ดˆ ๋ฌธ๋ฒ•

  • Intellj IDEA์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ํ™œ์šฉ ๋ฐฉ๋ฒ•

  • ๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ์—ด์ •

์•ˆ๋…•ํ•˜์„ธ์š”
๊ฒธ์†ํ•˜๊ฒŒ ์ต์€ ๋ฒผ์ž…๋‹ˆ๋‹ค.

89

๋ช…

์ˆ˜๊ฐ•์ƒ

4

๊ฐœ

์ˆ˜๊ฐ•ํ‰

5.0

์ 

๊ฐ•์˜ ํ‰์ 

1

๊ฐœ

๊ฐ•์˜

์•ˆ๋…•ํ•˜์„ธ์š”.

์Šค์Šค๋กœ ๋ฐฐ์šฐ๊ณ , ๊ฒฝํ—˜ํ•œ ๊ฒƒ์„ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์„ ์ฆ๊ธฐ๋ฉฐ,

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ ํ•˜๋Š” ๊ฐœ๋ฐœ์ž ๊น€์Šน๊ฒธ ์ž…๋‹ˆ๋‹ค.

 

  • ํ˜„) ์šฐ์•„ํ•œํ˜•์ œ๋“ค - ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž

  • ์ „) ์žก์ฝ”๋ฆฌ์•„ - ํ”Œ๋žซํผ ์•„ํ‚คํ…์ณ

  • ์ „) 11๋ฒˆ๊ฐ€ - ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž

  • ์ „) ์œ„๋ฉ”ํ”„ - ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž

 

 

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

28๊ฐœ โˆ™ (2์‹œ๊ฐ„ 30๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์•„์ง ์ถฉ๋ถ„ํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.
๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์ˆ˜๊ฐ•ํ‰์˜ ์ฃผ์ธ๊ณต์ด ๋˜์–ด์ฃผ์„ธ์š”!