ÀÌ ¼½¼ÇÀº Move Inner to Upper
Level ¸®ÆÑÅ丵 À§¿¡¼ ´ç½Å¿¡°Ô Æ÷°ýÀûÀÎ overview¸¦ Á¦°øÇϰí how ÀÌ ¸®ÆÑÅ丵ÀÌ IntelliJ IDEA¿¡¼ »ç¿ëµÉ ¼ö Àִ°¡¸¦ Á¦°øÇÕ´Ï´Ù.
Move Inner to Upper ¸®ÆÑÅ丵Àº »ç¿ëÀÚ¿¡°Ô ³»ºÎ Ŭ·¡½º¸¦ »óÀ§ ¼öÁØÀ¸·Î ¿Å±â´Â °ÍÀ» Çã¶ôÇÕ´Ï´Ù. ±× °á°ú·Î, ³»ºÎ Ŭ·¡½º´Â ´õ ³ôÀº ¼öÁØÀ¸·Î,
±×¸®°í ¸¸ÀÏ °á°úÀûÀΠŬ·¡½º°¡ ÃÖ°íÀÇ ¼öÁØ¿¡ ÀÖÀ¸¸é »õ·Î¿î ÆÄÀÏ¿¡ ¿Å°ÜÁý´Ï´Ù. ¸ðµç »óÀÀÇÏ´Â ÂüÁ¶´Â ÀÚµ¿ÀûÀ¸·Î ¾÷µ¥ÀÌÆ®µË´Ï´Ù.
³»ºÎ Ŭ·¡½º°¡ Á¤ÀûÀÌ ¾Æ´Ï°í ¸Þ¼Òµå¿Í ¿ÜºÎ Ŭ·¡½ºÀÇ Çʵ忡 Á¢±ÙÀ» ÇÊ¿ä·Î ÇÒ °æ¿ì¿¡, ¿ÜºÎ Ŭ·¡½º ÀνºÅϽº´Â À̵¿ÇÏ´Â ³»ºÎ Ŭ·¡½ºÀÇ »ý¼ºÀÚ¿¡ ¸Å°³ º¯¼ö·Î¼ ³Ñ¾î°¥ ¼ö ÀÖ½À´Ï´Ù.
¿¹¸¦ µé¸é, ¿ì¸®´Â ´ÙÀ½ Äڵ带 °¡Áý´Ï´Ù:
public class OuterClass {
public void foo() {
//some code here
}
public class InnerClass {
public void innerClassMethod() {
foo();
}
}
}
Moving Inner to Upper ¸®ÆÑÅ丵 ÈÄ¿¡ OuterClass ÄÚµå´Â ´ÙÀ½°ú °°ÀÌ º¸ÀÏ °Í ÀÔ´Ï´Ù:
public class OuterClass {
public void foo() {
//some code here
}
}
±×¸®°í À̰ÍÀº InnerClass ÀÔ´Ï´Ù (»õ·Î¿î ÆÄÀÏ¿¡¼):
class InnerClass {
private OuterClass outerClass;
public InnerClass(OuterClass outerClass) {
this .outerClass = outerClass;
}
public void innerClassMethod() {
outerClass.foo();
}
}
³»ºÎ¿¡¼ »óÀ§¼öÁØÀ¸·Î À̵¿
|
³»ºÎ Ŭ·¡½º¸¦ »óÀ§ ¼öÁØÀ¸·Î À̵¿Çϱâ À§ÇÏ¿©:
1. Project º¸±â¿¡¼:
³»ºÎ Ŭ·¡½º¸¦ ¼±ÅÃÇϰí Ŭ·¡½º ¸â¹ö¸¦ ¿À¸¥ÂÊ ¹öư Ŭ¸¯ÇÏ¿© ºÒ·ÁÁö´Â ÆË¾÷ ¸Þ´º¿¡¼ Refactor
| Move... À» Ŭ¸¯ÇϽʽÿÀ.

|
´ç½ÅÀº Ŭ·¡½º¸¦ ¼±ÅÃÇϱâ À§ÇØ ¾î¶² ´Ù¸¥ º¸±â¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù, ¿¹¸¦ µé¸é Structure.
|
editor ¿¡¼ :
¿øÇϴ Ŭ·¡½º ¼±¾ð¿¡¼ÀÇ Ä³·µÀ» ¹èÄ¡Çϰí ÁÖ ¸Þ´º¿¡¼ ¶Ç´Â ¿¡µðÅÍ¿¡¼ ¿À¸¥ÂÊ ¹öưÀ» Ŭ¸¯ÇÏ´Â °Í¿¡ ÀÇÇØ ºÒ·ÁÁö´Â ÆË¾÷ ¸Þ´º ¿¡¼ Refactor |
Move...¸¦ Ŭ¸¯ÇϽʽÿÀ.

|
´ç½ÅÀÌ Á¤ÀûÀÎ ³»ºÎ Ŭ·¡½º¸¦ ¿Å±â·Á°í Çϰí ÀÖÀ» ¶§, ¼±ÅÃÇÑ ³»ºÎ Ŭ·¡½º¸¦ À§ÇÑ ¸®ÆÑÅ丵À» ¼±ÅÃÇÏ¸é ´ç½ÅÀº ´ÙÀ½ÀÇ ´ÙÀ̾ó·Î±×¸¦ º¼ °ÍÀÔ´Ï´Ù:
|

¸¸ÀÏ ³»ºÎ Ŭ·¡½º°¡ ´Ù¸¥ Ŭ·¡½º·Î ¿Å°ÜÁö¸é Move
Members
¸®ÆÑÅ丵À» º¸½Ê½Ã¿À.
2. Move
Inner to Upper Level ´ÙÀ̾ó·Î±×°¡ ³ªÅ¸³¯ °ÍÀÔ´Ï´Ù:

Ŭ·¡½º À̸§
|
ÀÌ ÅØ½ºÆ® Çʵ忡¼ ´ç½ÅÀº ¼±Åà Ŭ·¡½ºÀÇ À̸§À» ÆíÁýÇÒ ¼ö Àְųª, ±âÁ¸ÀÇ Çϳª¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
|
¸Å°³ º¯¼ö·Î¼ ¿ÜºÎ Ŭ·¡½ºÀÇ ÀνºÅϽº ³Ñ±â±â
|
ÀÌ Ã¼Å© ¹Ú½º°¡ ¼±ÅÃµÉ ¶§ Parameter
name
ÅØ½ºÆ® Çʵå´Â »ç¿ë °¡´ÉÇÏ°Ô µÇ°í ´ç½ÅÀº ¿ÜºÎ Ŭ·¡½ºÀÇ ¸Å°³ º¯¼ö À̸§À» ÆíÁýÇÒ ¼ö Àְųª, IDEA¿¡ ÀÇÇØ Á¦¾ÈµÈ Çϳª¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
¸¸ÀÏ ÀÌ Ã¼Å© ¹Ú½º°¡ ¼±ÅõÇÁö ¾ÊÀ¸¸é ¼±ÅÃµÈ Å¬·¡½º´Â ´ÜÁö ·¹º§ ¾÷ ÇÏ¿© À̵¿µÇ°í »óÀÀÇÏ´Â ÂüÁ¶´Â ¾÷µ¥ÀÌÆ®µË´Ï´Ù.

|
¸¸ÀÏ ¿Å°ÜÁö´Â Ŭ·¡½º°¡ Á¤ÀûÀÎ °ÍÀ̶ó¸é ÀÌ Ã¼Å© ¹Ú½º´Â ºÒ°¡´ÉÇÏ°Ô ÇÏ°Ô µË´Ï´Ù.
|
|
º¯°æµÈ ¹Ì¸® º¸±â »ç¿ë
|
ÀÌ Ã¼Å© ¹Ú½º¸¦ ¼±ÅÃÇÏ¸é ´ç½ÅÀº ¾î¶² »ç¿ëÀÌ ¹ß°ßµÇ¾ú´ÂÁö ÃßÀûÇϰí, ±×µéÀÇ ±³Ã¼¸¦ ½ÂÀÎÇϵµ·Ï Çã¶ôÇÕ´Ï´Ù. ÀÌ Ã¼Å© ¹Ú½º°¡ ¼±ÅõÇÁö ¾ÊÀ» ¶§, IDEA´Â ±³Ã¼ ±â´É¸¦ ÀÚµ¿ÀûÀ¸·Î ¼öÇàÇÕ´Ï´Ù.

|
½ÉÁö¾î üũ ¹Ú½º°¡ ¼±ÅõÇÁö ¾Ê¾ÒÀ» ¶§µµ, ¸¸ÀÏ ¹ß°ßµÈ »ç¿ëÀÌ ¾î¶² Àбâ Àü¿ë ÆÄÀÏ¿¡¼ Á¸ÀçÇÏ¸é ±³Ã¼ »ç¿ëÀ» È®ÀÎÇÏ´Â ÇÁ·ÒÇÁÆ®°¡ ´ç½Å¿¡ ´ë±âµÉ °Í ÀÔ´Ï´Ù.
|
Refactoring
Preview ´ÙÀ̾ó·Î±×¿¡¼ (¸¸ÀÏ ±×°ÍÀÌ ³ªÅ¸³ª¸é) ´ç½ÅÀº ¼öÇàµÈ º¯°æÀ» ºÐ¼®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸®ÆÑÅ丵°ú ÇÔ²² ÁøÇàÇϱâ À§Çؼ, Do
Refactor¸¦ Ŭ¸¯ÇÕ´Ï´Ù, ±×·¸Áö ¾Ê´Ù¸é Cancel À» Ŭ¸¯ÇÕ´Ï´Ù. »ó¼¼ÇÑ °ÍÀ» º¸·Á¸é Refactoring
Preview¸¦ º¸½Ê½Ã¿À.
|
|
3. OK¸¦ ´©¸¨´Ï´Ù, ±×¸®°í ¿øÇϴ Ŭ·¡½º´Â À̵¿µÉ °ÍÀÔ´Ï´Ù.
|