Introduce Field Refactoring  

 

ÀÌ ¼½¼ÇÀº Introduce Field ¸®ÆÑÅ丵 À§¿¡¼­ ´ç½Å¿¡°Ô Æ÷°ýÀûÀÎ  overview¸¦ Á¦°øÇÏ°í  how  ÀÌ ¸®ÆÑÅ丵ÀÌ IntelliJ IDEA¿¡¼­ »ç¿ëµÉ ¼ö Àִ°¡¸¦ Á¦°øÇÕ´Ï´Ù.

°³¿ä


Introduce Field ¸®ÆÑÅ丵Àº »õ·Î¿î Çʵ带 ¼±¾ðÇϰí, ¼±ÅÃµÈ Ç¥Çö½Ä°ú ÇÔ²² ±×°ÍÀ» ÃʱâÈ­ÇÕ´Ï´Ù.  ¿ø·¡ Ç¥Çö½ÄÀº ÇʵåÀÇ »ç¿ëÀ¸·Î ±³Ã¼µË´Ï´Ù.


¿¹¸¦ µé¸é, ¸®ÆÑÅ丵 ÀüÀÇ ÀϺΠÄڵ尡 ¿©±â¿¡ ÀÖ½À´Ï´Ù:

 
    public class MyApplet extends JApplet {
 
        public void init() {
            Container cp = getContentPane();
            cp.setLayout(new FlowLayout());
            cp.add(new Button("Button"));
        }
    }


¿ì¸®´Â Introduce Field ¸®ÆÑÅ丵À» Àû¿ëÇϱâ À§ÇØ »õ·Î¿î ¹öư ("Button")À» ¼±ÅÃÇÕ´Ï´Ù.

ÀÌÈÄ ¿ì¸®´Â ´ÙÀ½ÀÇ Äڵ带 °¡Áý´Ï´Ù:

 
    public class MyApplet extends JApplet {
        private JButton button = new JButton("Button");
 
        public void init() {
            Container cp = getContentPane();
            cp.setLayout(new FlowLayout());
            cp.add(button);
        }
    }

 

ÇÊµå »ý¼ºÇϱâ


Çʵ带 »ý¼ºÇϱâ À§ÇØ, ¿¡µðÅÍ¿¡¼­ »õ·Î¿î Çʵ忡 ÇÒ´çµÈ Ç¥Çö½ÄÀ» ¼±ÅÃÇϽʽÿÀ.




Introduce Field ¸®ÆÑÅ丵¿¡ ´ëÇÑ Ç¥Çö½ÄÀ» ¼±ÅÃÇϱâ À§ÇØ Ctrl + W  (´Ü¾î ¼±ÅÃ)¸¦ »ç¿ëÇÏ´Â °ÍÀº ¾ÆÁÖ Æí¸®ÇÕ´Ï´Ù.

ÄÚµåÀÇ ºí·Ï È®ÀåÀ» ¼±ÅÃÇÏ°í ´ç½ÅÀº ij·µÀ» ³»ºÎÀÇ ¾î´À °÷¿¡ ¹èÄ¡Çϰí, Ctrl + W¸¦ ¸î ¹ø ´­·¯¼­ ¾î¶² Ç¥Çö½ÄÀÌ¶óµµ ½±°Ô Äڵ忡¼­ ¼±ÅÃÇØµµ ÁÁ½À´Ï´Ù:


ÁÖ ¸Þ´º¿¡¼­ ¶Ç´Â ¿¡µðÅÍ¿¡¼­ ¿À¸¥ÂÊ ¹öưÀ» Ŭ¸¯ÇÏ¿© ºÒ·ÁÁö´Â ÆË¾÷ ¸Þ´º¿¡¼­ Refactor Introduce Field...  Ç׸ñÀ» Ŭ¸¯ ÇϽʽÿÀ.

´ÙÀ½ÀÇ Introduce Field ´ÙÀ̾ó·Î±×°¡ ³ªÅ¸³³´Ï´Ù:



Introduce Field ´ÙÀ̾ó·Î±×ÀÇ ÃÖ»óÀ§¿¡¼­, »ý¼º ÇʵåÀÇ Å¸ÀÔÀÌ Ç¥½ÃµË´Ï´Ù.

Name ÅØ½ºÆ® Çʵ忡¼­ ´ç½ÅÀº Çʵ忡 À̸§À» ÀԷ½Ãų ¼ö Àְųª, IDEA¿¡ ÀÇÇØ Á¦¾ÈµÈ Çϳª¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.  Æ¯È÷ Á¦¾ÈµÈ À̸§Àº ±× ŸÀÔ À§¿¡¼­ ¼±ÅÃµÈ Ç¥Çö½Ä¿¡ ÀÇÁ¸ÇÕ´Ï´Ù.

¸¸ÀÏ ´ç½ÅÀÌ ÄÚµå ½ºÅ¸ÀÏ ¿É¼Ç ¿¡¼­ Çʵ带 À§ÇØ À̸§ ½Äº° ¹øÈ£¸¦ ÁöÁ¤Çß´õ¶ó¸é Á¦¾ÈµÈ Çʵå À̸§À» Çü¼ºÇÏ´Â °ÍÀº IDEA¿¡ ÀÇÇØ »ç¿ëµÉ °ÍÀÔ´Ï´Ù.


¸¸ÀÏ ¼±ÅÃµÈ Ç¥Çö½ÄÀÇ ´ÙÁß ¹ß»ýÀÌ ÀÖÀ¸¸é, ±×µé ¸ðµÎ´Â ¿¡µðÅÍ¿¡¼­ °­Á¶µÉ °ÍÀÔ´Ï´Ù. ±×¸®°í Replace all occurrences of expression (  <number of occurrences found>  ) üũ¹Ú½º´Â ´ÙÀ̾ó·Î±× À©µµ¿ìÀÇ ¹Ù´Ú¿¡¼­ ³ªÅ¸³¯ °Í ÀÔ´Ï´Ù. ¸¸ÀÏ Ã¼Å©¹Ú½º°¡ ¼±ÅõǸé, ¼±ÅÃµÈ Ç¥Çö½ÄÀÇ ¸ðµç ¹ß»ýÀº ±³Ã¼µÉ °Í ÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ¿À·ÎÁö ´ç½ÅÀÌ Ã³À½¿¡ ÁöÁ¤ÇÑ Ç¥Çö½Ä¸¸ÀÌ º¯°æµÉ °Í ÀÔ´Ï´Ù.

 


´ÙÀ̾ó·Î±×´Â 3°³ÀÇ ¿É¼Ç ±×·ìÀ» °¡Áý´Ï´Ù:

ÃʱâÈ­

Çʵ尡 ÃʱâÈ­µÈ °÷À» Á¤ÀÇÇÕ´Ï´Ù:

 Current method - Çʵå´Â ¼±ÅÃµÈ Ç¥Çö½Ä¿¡ ¾Õ¼­ ¸Þ¼Òµå ³»¿¡¼­ Áï½Ã ÃʱâÈ­µË´Ï´Ù.
 
Field declaration - Çʵå´Â ´Ù¸¥ Çʵå¿Í ÇÔ²² ÃʱâÈ­µË´Ï´Ù.
 
Class constructor - Çʵå´Â Ŭ·¡½º »ý¼ºÀÚ¿¡¼­ ÃʱâÈ­µË´Ï´Ù.

°¡½Ã¼º

Çʵ带 À§ÇØ °¡½Ã¼º ¹üÀ§¸¦ °áÁ¤ÇÕ´Ï´Ù:

 Private  
 
Package local  
 
Protected  
 
Public  

´Ù¸¥ º¯°æÀÚ

Çʵ带 À§ÇØ º¯°æÀÚ¸¦ °áÁ¤ÇÕ´Ï´Ù:

 Final  


 


¸¸ÀÏ Çʵ尡 ÇöÀçÀÇ ¸Þ¼Òµå·Î ÃʱâÈ­µÇ¸é final üũ ¹Ú½º´Â ºÒ°¡´ÉÇÏ°Ô ÇÏ°Ô µË´Ï´Ù.


¸¸ÀÏ ¼±ÅÃµÈ Äڵ尡 À¯È¿ÇÑ Ç¥Çö½ÄÀ» Ç¥½ÃÇÏÁö ¾ÊÀ¸¸é ´ç½Å¿¡°Ô ´ÙÀ½ÀÇ ¿¡·¯ ¸Þ½ÃÁö·Î ÇÁ·ÒÇÁÆ® µÉ °ÍÀÔ´Ï´Ù: