ÃßÃâ ¸Þ¼Òµå ¸®ÆÑÅ丵

 

Extract Method ¸®ÆÑÅ丵Àº »ç¿ëÀÚ¿¡°Ô ¼±ÅÃµÈ ÄÚµå ÇÁ·¡±×¸ÕÆ®¸¦ ¸Þ¼Òµå·Î ¹Ù²Ù´Â °ÍÀ» Çã¶ôÇÕ´Ï´Ù.  ÀÌ ¸®ÆÑÅ丵¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ »çÇ×Àº Overview¸¦ ÂüÁ¶ÇϽʽÿÀ, ¶Ç´Â  how to extract a methodÀ» ±â¼úÇÑ ¼½¼ÇÀ¸·Î ¹Ù·Î °¡½Ê½Ã¿À.

°³¿ä

 

Extract Method  ¸®ÆÑÅ丵ÀÌ È£ÃâµÉ ¶§, IDEA´Â ÄÚµåÀÇ ¼±ÅÃµÈ ºí·ÏÀ» ºÐ¼®Çϰí, ¼±ÅÃµÈ ÄÚµå ÇÁ·¡±×¸ÕÆ®¸¦ À§ÇÑ ÀÔ·ÂÀÎ º¯¼ö¿Í ±×°ÍÀ» À§ÇÑ Ãâ·ÂÀÎ º¯¼ö¸¦ °¨ÁöÇÕ´Ï´Ù.  ¸¸ÀÏ Á¤È®ÇÏ°Ô ÇÑ °³ÀÇ Ãâ·Â º¯¼ö°¡ ÀÖÀ¸¸é, ±×°ÍÀº ÃßÃâÇÑ ¸Þ¼Òµå¸¦ À§ÇØ ¹Ýȯ °ªÀ¸·Î »ç¿ëµË´Ï´Ù.  ´ÙÁß Ãâ·Â º¯¼ö°¡ ÀÖÀ» °æ¿ì¿¡, Extract Method ¸®ÆÑÅ丵Àº Àû¿ëµÇÁö ¾ÊÀ»Áöµµ ¸ð¸¨´Ï´Ù. ±×¸®°í ¿À·ù ¸Þ½ÃÁö°¡ ³ªÅ¸³³´Ï´Ù.  ÀÌ °æ¿ì Extract Method ÀÛ¾÷À» Çã¿ëÇÏ´Â °¡´ÉÇÑ ¾à°£ÀÇ ¼Ö·ç¼ÇÀÌ ÀÖ½À´Ï´Ù.  ¿¹¸¦ µé¸é, ´ç½ÅÀº ¸ðµç Ãâ·Â °ªÀ» Æ÷ÇÔÇϴ Ưº°ÇÑ µ¥ÀÌÅÍ-Ŭ·¡½º¸¦ »ý¼ºÇصµ ÁÁ½À´Ï´Ù.  ±×·± °¡´É¼ºÀÇ Å« ´Ù¾ç¼º ¶§¹®¿¡, ¼±ÅÃÀº ´ç½Å±îÁö ´Þ·Á ÀÖ°í Extract Method ¸®ÆÑÅ丵ÀÌ ÀÚµ¿ ¸ðµå¿¡¼­ ´ÙÁß Ãâ·Â °ª¿¡ ÀÛµ¿µÇÁö ¾Ê±â ¶§¹®¿¡,  ´ç½ÅÀÇ Äڵ带 ¸®ÆÑÅ丵À» Àû¿ëÇϱâ Àü¿¡ º¯°æÇؾ߸¸ ÇÕ´Ï´Ù.

The code fragment to form the method, may not necessarily be a set of statements. It may also be an expression used somewhere in the code. For example, applying the Extract Method  to: 

¸Þ¼Òµå¸¦ Çü¼ºÇÏ´Â ÄÚµå ÇÁ·¡±×¸ÕÆ®°¡ ¹Ýµå½Ã ÇÑ ¼¼Æ®ÀÇ ½ºÅ×ÀÌÆ®¸ÕÆ®°¡ ¾Æ´ÒÁöµµ ¸ð¸¨´Ï´Ù.  ¶ÇÇÑ Äڵ忡¼­ ´ëü·Î »ç¿ëµÇ´Â Ç¥Çö½ÄÀÏÁöµµ ¸ð¸¨´Ï´Ù.  ¿¹¸¦ µé¸é Extract Method¸¦ ´ÙÀ½¿¡ Àû¿ëÇÏ´Â °Í:


results in: 

°á°ú´Â:




´ÙÁß Ãâ·Â º¯¼öÀÇ °æ¿ì¿¡ ´õÇÏ¿©, Extract Method ¸®ÆÑÅ丵Àº ´õ ¾à°£ÀÇ °æ¿ì¿¡¼­ ÀÛµ¿ÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù.  ¿¹¸¦ µé¸é, ¾î´À ÂÊÀÌ Á¶°ÇºÎ·Î ¸Þ¼Òµå¸¦ Æ÷ÇÔÇÏ´Â °Í¿¡¼­ ¸®ÅÏÇϰí, ±×°ÍÀÇ ³¡¿¡ ³õÀÌÁö ¾Ê´Â ÄÚµå ÇÁ·¡±×¸ÕÆ®¿¡ ´ëÇØ¼­ ÀÛµ¿ÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù.


 

¸Þ¼Òµå¸¦ ÃßÃâÇÏ´Â ¹æ¹ý


  Overview
·ÎºÎÅÍ ¿¹Á¦¿¡ ±Ù°ÅÇÕ´Ï´Ù 

1.  

¸Þ¼Òµå¿¡ º¯ÇüµÇ´Â ÄÚµåÀÇ ºí·ÏÀ» ¼±ÅÃÇϽʽÿÀ.

2.  

Refactor ¸Þ´º À§¿¡¼­, Extract Method...  Å¬¸¯ÇϽʽÿÀ(¶Ç´Â Ctrl + Alt + M À» ´©¸¨´Ï´Ù). ´Ù¸¥ ¹æ¹ýÀº Refactor ¿¡ Æ÷ÀÎÆ®ÇÏ°í ¼±ÅÃÀ» ¿À¸¥ÂÊ ¹öưÀ» Ŭ¸¯Çϰí Extract Method...¸¦ Ŭ¸¯ÇÏ´Â °Í ÀÔ´Ï´Ù.


´ÙÀ½ ´ÙÀ̾ó·Î±×´Â ¸ðµç ÀÔ·Â º¯¼ö°¡ µðÆúÆ® ¸Å°³º¯¼ö·Î¼­ ¸®½ºÆ® µÇ´Â °÷¿¡¼­ ³ªÅ¸³¯ °ÍÀÔ´Ï´Ù. (¸¸ÀÏ ¸Å°³ º¯¼ö Á¢µÎ»ç°¡  File | Settings | IDE Settings | Code Style ´ÙÀ̾ó·Î±×¿¡¼­ ¼³Á¤µÇ¾ú´Ù¸é, ÀÌ Á¢µÎ»ç´Â ÀÌ¹Ì Ãß°¡µÇ¾ú½À´Ï´Ù):

 




 3.   

Name ÅØ½ºÆ® Çʵ忡¼­, »õ·Î¿î ¸Þ¼ÒµåÀÇ À̸§À» ÁöÁ¤ÇϽʽÿÀ.

 4.   

Parameters ¸ñ·Ï¿¡¼­:

 »óÀÀÇϴ üũ¹Ú½º¸¦ ¼±ÅÃ/Á¦°ÅÇÏ¿© ¸Þ¼Òµå ¸Å°³ º¯¼ö·Î¼­ ³Ñ°ÜÁú º¯¼ö¸¦ ÁöÁ¤ÇϽʽÿÀ; ¸¸ÀÏ ¸Å°³ º¯¼ö°¡ ºÒ°¡´ÉÇÏ´Ù¸é, ÃʱⰪ°ú ÇÔ²² »óÀÀÇϴ ŸÀÔÀÇ ·ÎÄà º¯¼ö´Â ÃßÃâ ¸ðµå¿¡¼­ »ý¼ºµÉ °Í ÀÔ´Ï´Ù. ±×·¡¼­ ´ç½ÅÀº ¼öµ¿À¸·Î ÀûÀýÇÑ °ªÀ¸·Î À̴ϼȶóÀÌÀú¸¦ ÀÔ·ÂÇØ¾ß¸¸ ÇÒ °Í ÀÔ´Ï´Ù.

  »óÀÀÇÏ´Â ¸Å°³ º¯¼ö ¶óÀÎÀ» ´õºí Ŭ¸¯ÇÏ°í »õ·Î¿î À̸§À» ÀÔ·ÂÇÏ¿© ¿øÇÏ´Â ¸Å°³ º¯¼öÀÇ À̸§À» ¹Ù²Ù½Ê½Ã¿À

 5.   

Visibility ±×·ì¿¡¼­, »õ·Î¿î ¸Þ¼Òµå¸¦ À§ÇÑ °¡½Ã¼ºÀ» ÁöÁ¤ÇϽʽÿÀ.

 6.   

»õ·Î¿î ¸Þ¼Òµå¿¡ ³Ñ¾î°¡´Â ¸Å°³ º¯¼öÀÇ ¼ø¼­¸¦ ÁöÁ¤Çϱâ À§ÇØ Move Up  and Move Down¸¦ »ç¿ëÇϽʽÿÀ.

 7.   

OK¸¦ Ŭ¸¯ÇϽʽÿÀ.  »õ·Î¿î ¸Þ¼Òµå°¡ »ý¼ºµÉ °ÍÀ̰í ÄÚµå ÇÁ·¡±×¸ÕÆ®´Â ¸Þ¼Òµå ÄÝ·Î ±³Ã¼µÉ °ÍÀÔ´Ï´Ù.

 8.   

¸¸ÀÏ IDEA°¡ ÇöÀçÀÇ Å¬·¡½º ³»¿¡¼­ »õ·Ó°Ô »ý¼ºµÈ ¸Þ¼Òµå¸¦ ºÎ¸£´Â Äݰú ÇÔ²² ±³Ã¼µÇ´Â ¾î¶² Áߺ¹µÈ ÄÚµå Á¶°¢ÀÌ ÀÖ´Â °ÍÀ» °¨ÁöÇϸé, ´ç½Å¿¡°Ô Process Duplicates  ´ÙÀ̾ó·Î±×°¡ ÇÁ·ÒÇÁÆ® µÉ °Í ÀÔ´Ï´Ù.



¸¸ÀÏ ´ç½ÅÀº No ¸¦ ´©¸£¸é, ¿À·ÎÁö óÀ½À¸·Î ¼±ÅÃµÈ ÄÚµåÀÇ Á¶°¢Àº »õ·Ó°Ô »ý¼ºµÈ ¸Þ¼Òµå¸¦ ºÎ¸£´Â ÄÝÀ» À§ÇØ ±³Ã¼µÉ °ÍÀÔ´Ï´Ù. ¸¸ÀÏ ´ç½ÅÀÌ

Yes¸¦ ¼±ÅÃÇϸé,  ¸ðµç Áߺ¹µÈ Á¶°¢Àº ´ÙÀ½ÀÇ ´ÙÀ̾ó·Î±×ÀÇ µµ¿ò°ú ÇÔ²² ó¸®µÉ °ÍÀÔ´Ï´Ù.


´ç½ÅÀÌ °­Á¶µÈ Äڵ带 ¼±ÅÃÇÏ´Â °Í¿¡ µû¶ó ¸Þ¼Òµå ÄÝ(¸¸ÀÏ ´ç½ÅÀÌ Yes ¸¦ ¼±ÅÃÇϸé)À» À§ÇØ º¯°æµÇ°Å³ª, ¶Ç´Â ±×´ë·Î ÀÖÀ» °ÍÀÔ´Ï´Ù(¸¸ÀÏ ´ç½ÅÀÌ No¸¦ ¼±ÅÃÇϸé).