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¸¦ ¼±ÅÃÇϸé).
|
|