Inline Variable Refactoring  

 

ÀÌ ¼½¼ÇÀº ´ç½Å¿¡°Ô Inline Variable  ¸®ÆÑÅ丵 »ó¿¡¼­ Æ÷°ýÀûÀΠ overview¿Í  how ÀÌ ¸®ÆÑÅ丵ÀÌ IntelliJ IDEA¿¡¼­ »ç¿ëµÉ ¼ö Àִ°¡¸¦ Á¦°øÇÕ´Ï´Ù.

°³¿ä


ÀϹÝÀûÀ¸·Î ¸»ÇÏÀÚ¸é, Inline Variable ¸®ÆÑÅ丵Àº Introduce Variable ¿¡ ¹Ý´ëÀÔ´Ï´Ù. Inline Variable ¸®ÆÑÅ丵À» ¼öÇàÇϸ鼭, IDEA´Â º¯¼ö »ç¿ëÀ» ±× À̴ϼȶóÀÌÀú·Î ±³Ã¼ÇÒ °ÍÀÔ´Ï´Ù.


¿¹¸¦ µé¸é, ¿ì¸®´Â ´ÙÀ½ Äڵ带 °¡Áý´Ï´Ù:

 
    public class AClass {
        public int MethodA() {
            int aVariable = 1;
            //some code here
            return aVariable;
        }
    }
 
±×¸®°í ´ç½ÅÀº aVariable °¡ »ç½Ç Áߺ¹À̶ó°í ¾Ë¾Ò½À´Ï´Ù.  ¸®ÆÑÅ丵ÀÌ Àû¿ëµÇ°í ³­ ÈÄ¿¡ À̰ÍÀº ÄÚµåÀÔ´Ï´Ù: 
 
    public class AClass {
        public int methodA() {
            //some code here
            return 1;
        }
    }



Inlining Variable  


º¯¼ö¸¦ inline Çϱâ À§ÇÏ¿©

 1.   Å¸°Ù º¯¼ö ¼±¾ð ¶Ç´Â »ç¿ë¿¡ ij·µÀ» ¹èÄ¡Çϰí, ÁÖ ¸Þ´º¿¡¼­ ¶Ç´Â ¿¡µðÅÍ¿¡¼­ ¿À¸¥ÂÊ ¹öưÀ» Ŭ¸¯ÇÏ¿© ºÒ·ÁÁö´Â ÆË¾÷ ¸Þ´º¿¡¼­ Refactor Inline...  À» Ŭ¸¯Çϰųª OR  Ctrl + Alt + N À» ´©¸¨´Ï´Ù.  ±× ´ÙÀ½ º¯¼öÀÇ ¸ðµç ¹ß°ßµÈ ¹ß»ýÀº °­Á¶µÉ °ÍÀÔ´Ï´Ù. ±×¸®°í ´ç½ÅÀº ´ÙÀ½ ´ÙÀ̾ó·Î±× À©µµ¿ìÀ» º¼ °ÍÀÔ´Ï´Ù:




ÀϺΠÁ¦ÇÑÀÌ ÀÌ ¸®ÆÑÅ丵À» »ç¿ëÇϱâ À§ÇØ ÀÖ½À´Ï´Ù:



 
Ÿ°Ù º¯¼ö´Â ±× ¼±¾ð¿¡¼­ ÃʱâÈ­µÇ¾î¾ß¸¸ ÇÕ´Ï´Ù.  ±×·¸Áö ¾ÊÀ¸¸é, ´ç½Å¿¡°Ô ´ÙÀ½ÀÇ ¿¡·¯ ¸Þ½ÃÁö°¡ ÇÁ·ÒÇÁÆ® µÉ °ÍÀÔ´Ï´Ù:



  ¸¸ÀÏ
Ÿ°Ù º¯¼ö°¡ ¾îµð¿¡¼±°¡ º¯°æµÇ¸é º¯°æ Àü¿¡ ¹ß»ýÀº ¸®ÆÑÅ丵¿¡ ÀÇÇØ ¹Ù²ð °ÍÀÔ´Ï´Ù.  ¸¸ÀÏ º¯°æ¿¡ ¾Õ¼­ Ÿ°Ù º¯¼öÀÇ ¾î¶² ¹ß»ýµµ ¾øÀ¸¸é, ´ç½Å¿¡°Ô ´ÙÀ½ÀÇ ¿¡·¯ ¸Þ½ÃÁö°¡ ÇÁ·ÒÇÁÆ® µÉ °ÍÀÔ´Ï´Ù:



 2.   OK¸¦ Ŭ¸¯ÇϽʽÿÀ. ±×¸®¸é ¿øÇÏ´Â º¯¼ö´Â inline µÉ °ÍÀÔ´Ï´Ù.


 

´ç½ÅÀº Inline Variable ¸®ÆÑÅ丵 ÀÌÈÄ °¡´ÉÇÑ ºÎÀÛ¿ëÀ» ¾Ë°í ÀÖ¾î¾ß¸¸ ÇÕ´Ï´Ù.  IDEAÀº  ±× À̴ϼȶóÀÌÀú¸¦ À§ÇÑ º¯¼ö¸¦ ´ëüÇϸ鼭 ´ç½ÅÀ» º¸Á¶ÇÒ °Í ÀÔ´Ï´Ù ±×·¯³ª ÀÌ µ¿ÀÛ °á°ú°¡ Á¤È®ÇÑÁö ¾î¶²Áö´Â üũÇÏÁö ¾ÊÀ» °Í ÀÔ´Ï´Ù.

±×¸®°í ´ç½ÅÀÌ ¸®ÆÑÅ丵À» Àû¿ëÇÒ ¶§ ´ç½ÅÀº º¯°æÀÌ ´ç½ÅÀÇ Äڵ带 ¿¡·¯·Î ä¿ìÁö ¾ÊÀ» °ÍÀ» È®½ÅÇØ¾ß¸¸ ÇÕ´Ï´Ù


¿¹¸¦ µé¸é, ´ç½ÅÀº ´ÙÀ½ÀÇ Äڵ带 °¡Áý´Ï´Ù:

 
    public class AClass {
        int aField = 1;
 
        public int methodA() {
            int aVariable = methodB();
            foo(aVariable);
            return aVariable;
        }
 
        private int methodB() {
            return aField++;
        }
    }
    

¸¸ÀÏ ´ç½ÅÀÌ aVariable ¸¦ À§ÇÑ Inline Variable ¸®ÆÑÅ丵À» Àû¿ëÇÑ´Ù¸é, ¸Þ¼Òµå foo ¿¡ ÁÖ¾îÁö°í methodA ¿¡ ÀÇÇØ ¸®ÅÏµÈ °ªÀº »óÀÌÇÒ °ÍÀÌ°í ´ç½ÅÀÌ ±â´ëÇß´ø °ÍÀÌ ¾Æ´Ò °Í ÀÔ´Ï´Ù.  µû¶ó¼­, ´ç½ÅÀº ¸®ÆÑÅ丵 »ç¿ëÀ» ¸Å¿ì Á¶½É½º·¯¿ï Çʿ䰡 ÀÖ°í ÇÊ¿äÇÏ´Ù¸é ÇÊ¿äÇÑ Á¤Á¤À» ¼öµ¿À¸·Î ¸¸µé Çʿ䰡 ÀÖÀ» °ÍÀÔ´Ï´Ù.