*:* Hyejin's third story *:*


[C#] È®À强 ³ôÀº ÄÚµåÀÇ À籸¼º, ¸®ÆÑÅ丵
   | 2006¡¤04¡¤01 14:14 | HIT : 1,055 | VOTE : 369 |
[C#] È®À强 ³ôÀº ÄÚµåÀÇ À籸¼º, ¸®ÆÑÅ丵
 
[ ¼­¿ì¼®(Ä«À̽ºÆ® ´ëÇпø) 2005/10/10]
 
°³¹ßÀÚ´Â ÀÚ½ÅÀÌ ÀÛ¼ºÇÑ Äڵ带 ²÷ÀÓ¾øÀÌ º¯°æÇÏ°í ¼öÁ¤Çϸç ÃÖÀûÈ­ÇÑ´Ù. ÀÌ´Â º¸´Ù ³ªÀº Äڵ带 ÀÛ¼ºÇϱâ À§ÇÑ °úÁ¤À¸·Î ÇÔ¼ö¿Í º¯¼öÀÇ À̸§À» º¯°æÇϰųª, ¸Å¿ì ±æ°Ô ´Ã¾îÁ® ÀÖ´Â Äڵ带 º°µµÀÇ ÇÔ¼ö·Î ºÐ¸®Çϰųª, ¶Ç´Â ¸Å°³ º¯¼öÀÇ ¼ö¸¦ Ãß°¡ ¶Ç´Â Á¦°ÅÇϱ⵵ ÇÑ´Ù.

¸®ÆÑÅ丵(Refactoring)Àº ÀÌ¿Í °°ÀÌ °³¹ßÀÚ°¡ ±âÁ¸ÀÇ Äڵ带 º¯°æÇÏ´Â ÀÏ·ÃÀÇ ÀÛ¾÷À» ÁöĪÇÏ´Â °ÍÀ¸·Î½á, ÄÚµåÀÇ ¼º´ÉÀ» °³¼±Çϱ⠺¸´Ù´Â ÄÚµåÀÇ ±¸Á¶¸¦ °³¼±ÇÏ¿© °ü¸®Çϱ⠽¬¿ì¸ç È®À强ÀÌ ³ôÀº Äڵ带 ¸¸µé¾î ³»´Â ÇÁ·Î¼¼½ºÀÌ´Ù.

±×·¯³ª ¸®ÆÑÅ丵ÀÌ Æ¯Á¤ÇÑ ¸ñÇ¥¸¦ ´Þ¼ºÇϱâ À§Çؼ­ ¸¸µé¾îÁø »õ·Ó°Ô ¸¸µé¾îÁø ÀÌ·ÐÀ̶ó°í º¼ ¼ö´Â ¾ø´Ù. ´ÜÁö °³¹ßÀÚµéÀÌ ±× µ¿¾È ÇØ¿Ô´ø Ȱµ¿¿¡ À̸§À» ºÎ¿©ÇÏ¿© º¸´Ù ¸í½ÃÀûÀ¸·Î ¸¸µé¾úÀ» »ÓÀÌ´Ù(¸®ÆÑÅ丵ÀÌ Àý´ë·Î °³¹ßÀÚ¿¡°Ô À־ ¶Ç ´Ù¸¥ ÀÛ¾÷ÀÌ µÇ¾î¼­´Â ¾È µÈ´Ù).

¸®ÆÑÅ丵¿¡¼­ Á¦¾ÈÇÏ´Â ÁöħÀÇ ¼ö´Â 70¿© °¡Áö¿¡ À̸£¸ç, ¸î¸î ¸®ÆÑÅ丵µéÀº ¸Å¿ì °£´ÜÇÏ°í ºÐ¸íÇØ¼­ ´Ù¸¥ ¸®ÆÑÅ丵 ±â¹ý¿¡ Ȱ¿ëµÇ±âµµ ÇÑ´Ù. ¿¹¸¦ µé¾î, "¸ÅÁ÷ ³Ñ¹ö¸¦ ±âÈ£ »ó¼ö·Î ´ëüÇ϶ó."¶ó´Â ÁöħÀº Äڵ带 ÀÛ¼ºÇÒ ¶§ ƯÁ¤ÇÑ °ªÀ» Äڵ忡 ÀÔ·ÂÇÏÁö ¸»°í À̸§ »ó¼ö¸¦ ¸¸µé¶ó´Â ÀǹÌÀÌ´Ù. ´ÙÀ½ <¼Ò½º 1>¿¡¼­ 10ÀÌ ¹«¾ùÀ» ÀǹÌÇϴ°¡?

class PageManager{  
public static int totalArticle (int nTotalPage)
  {
    return 10 * nTotalPage;
  }
}
¼Ò½º 1 - ¸®ÆÑÅ丵À» Àû¿ëÇϱâ ÀüÀÇ ÄÚµå

ÇÔ¼öÀÇ À̸§À¸·Î ÃßÃøÄÁµ¥, ¾Æ¸¶µµ 10Àº ÇÑ ÆäÀÌÁö¿¡ Ãâ·ÂµÇ´Â ±ÛÀÇ ¼öÀÏ °ÍÀÌ´Ù. ÀÌ ÄÚµå´Â "¸ÅÁ÷ ³Ñ¹ö¸¦ ±âÈ£ »ó¼ö·Î ´ëüÇ϶ó."¶ó´Â ÁöħÀ» Àû¿ëÇÏ¿© ´ÙÀ½°ú °°ÀÌ ¸®ÆÑÅ丵ÇÒ ¼ö ÀÖ´Ù.

Class PageManager{
  public const int ARTICLES_PER_PAGE = 10;
  public static int totalArticle (int nTotalPage)
  {
    return ARTICLES_PER_PAGE * nTotalPage;
  }
}
¼Ò½º 2 - ¸®ÆÑÅ丵À» Àû¿ëÇÑ ÈÄÀÇ ÄÚµå

<¼Ò½º 2>ÀÇ ¸®ÆÑÅ丵µÈ ÄÚµå´Â µÎ °¡Áö Ãø¸é¿¡¼­ °³¼±µÇ¾ú´Âµ¥, ¿ì¼± ÄÚµåÀÇ °¡µ¶¼ºÀÌ ³ô¾ÆÁ³°í ÇÑ ÆäÀÌÁö¿¡ Ãâ·ÂµÇ´Â ±ÛÀÇ ¼ö¸¦ º¯°æÇϰíÀÚ ÇÒ ¶§ ¸ðµç 10À» º¯°æÇÏÁö ¾Ê°í À̸§ »ó¼ö¸¸ º¯°æÇÒ ¼ö ÀÖ´Ù.

ÇÏÁö¸¸ ¸ðµç ¸®ÆÑÅ丵ÀÌ ¾ÕÀÇ ¿¹¿Í °°ÀÌ ´Ü¼øÇÏÁö ¾ÊÀ» »Ó¸¸ ¾Æ´Ï¶ó, ¾î¶² ¸®ÆÑÅ丵µéÀº ¸®ÆÑÅ丵À» ¼öÇàÇϱâ À§Çؼ­ º¸´Ù ÀÛÀº ±Ô¸ðÀÇ ¸®ÆÑÅ丵µéÀ» º´ÇàÇØ¾ß Çϱ⵵ ÇÑ´Ù.

Visual Studio Team System(VSTS)¿¡¼­ÀÇ ¸®ÆÑÅ丵
¸¸¾à °³¹ßÀÚ°¡ ¸®ÆÑÅ丵À» ÅøÀÇ µµ¿ò ¾øÀÌ Àû¿ëÇÑ´Ù¸é ¾Æ¸¶µµ ¸¹Àº ½Ã°£À» ÅõÀÚÇØ¾ß ÇÒ °ÍÀÌ´Ù. ¹°·Ð Á¡Â÷ÀûÀ¸·Î ¿Ï¼ºµµ°¡ ³ô¾ÆÁö´Â Äڵ带 º¸¸é¼­ ½º½º·Î ¸¸Á·ÇØÇÒ ¼ö´Â ÀÖ°ÚÁö¸¸, ÅøÀ» Á¦´ë·Î Ȱ¿ëÇÏÁö ¾Ê´Â´Ù¸é, Äڵ带 º¹»çÇÏ°í ºÙ¿© ³Ö°í, ã¾Æ¼­ ´ëüÇϰí, ÄÄÆÄÀÏÇϰí Å×½ºÆ®ÇÏ´Â ¹Ýº¹ÀûÀÎ ÀÛ¾÷¿¡ ¸®ÆÑÅ丵ÀÌ ºÎ´ã½º·´°Ô ´À²¸Áö°Ô µÉ °ÍÀÌ´Ù. ¶ÇÇÑ ¸®ÆÑÅ丵À» ¼öÇàÇÏ´Â µµÁß¿¡ Äڵ尡 ´Ù¸£°Ô ÀÛµ¿Çϰųª ¿À·ù°¡ Æ÷ÇÔµÈ Äڵ尡 ÀÛ¼ºµÉ ¼ö ÀÖ´Ù.

ÇÏÁö¸¸ VSTS¿¡¼­´Â ÀÌ ¸ðµç ÀÛ¾÷ÀÌ ¸Å¿ì °£´ÜÇÏ°í Æí¸®ÇÏ´Ù. ¸®ÆÑÅ丵ÇϰíÀÚ ÇÏ´Â Äڵ带 ¼±ÅÃÇÏ°í ¸¶¿ì½º ¿À¸¥ÂÊ ¹öưÀ» Ŭ¸¯ÇÏ¿© Refactor ¸Þ´º¿¡¼­ ¿øÇÏ´Â ±â¹ýÀ» ¼±ÅÃÇÑ´Ù. VSTS¿¡¼­ Áö¿øÇÏ´Â ¸®ÆÑÅ丵 ±â´ÉÀº ´ÙÀ½ <Ç¥ 1>°ú °°´Ù.

<Ç¥ 1> Visual Studio 2005°¡ Áö¿øÇÏ´Â ¸®ÆÑÅ丵 ±â¹ý  
¸®ÆÑÅ丵 ±â¹ý ÀǹÌ
Extract Method ¼±ÅÃÇÑ Äڵ带 »õ·Î¿î ¸Þ¼­µå·Î Á¤ÀÇÇÑ´Ù.
Encapsulate Field public Çʵ带 private Çʵå·Î ¹Ù²Ù°í ±âÁ¸ÀÇ Çʵå´Â property¸¦ »ç¿ëÇÏ¿© ĸ½¶È­ÇÑ´Ù.
Extract Interface ±âÁ¸ÀÇ Å¸ÀÔ ¸â¹ö¸¦ ±â¹ÝÀ¸·Î »õ·Î¿î ÀÎÅÍÆäÀ̽º ŸÀÔÀ» Á¤ÀÇÇÑ´Ù.
Reorder Parameters ¸Å°³ º¯¼ö¸¦ ÀçÁ¤·ÄÇÑ´Ù.
Remove Parameters ¸Å°³ º¯¼ö¸¦ Á¦°ÅÇÑ´Ù.
Rename ¸Þ¼­µå À̸§À̳ª Çʵå, Áö¿ª º¯¼ö µîÀÇ À̸§À» ÀϰýÀûÀ¸·Î º¯°æÇÑ´Ù.
Promote Local Variable to Parameter Áö¿ª º¯¼ö¸¦ ¸Å°³ º¯¼ö·Î À̵¿½ÃŲ´Ù.

±×¸®°í VSTS°¡ Á¦°øÇÏ´Â ¸®ÆÑÅ丵 ±â¹ýµéÀº ¾ðÁ¦³ª ¹Ì¸®º¸±â(Preview) ±â´ÉÀ» Á¦°øÇϱ⠶§¹®¿¡, Äڵ尡 º¯°æµÇ°í ³­ ÈÄÀÇ ¸ð½Àµµ ¹Ì¸® È®ÀÎÇÒ ¼ö ÀÖ´Ù. ÀÌ ±Û¿¡¼­´Â <Ç¥ 1>¿¡¼­ ¼Ò°³ÇÑ ¸®ÆÑÅ丵 ±â¹ý Áß¿¡¼­, °¡Àå ¸¹ÀÌ »ç¿ëÇÏ´Â ¸î °¡Áö ±â¹ýµéÀ» Áß½ÉÀ¸·Î ¼Ò°³ÇϰڴÙ.

ÄÚµå °¡µ¶¼º ³ôÀÌ´Â Extract Method
ù ¹øÂ°·Î »ìÆìº¼ ¸®ÆÑÅ丵 ±â¹ýÀº Äڵ尡 Áö³ªÄ¡°Ô ±æ°Å³ª, ƯÁ¤ Äڵ尡 ¹Ýº¹Çؼ­ »ç¿ëµÉ ¶§ Àû¿ëÇÏ´Â Extract MethodÀÌ´Ù. ÀÌ ±â¹ýÀ» Àû¿ëÇÏ´Â ÀÌÀ¯´Â °£´ÜÇÏ´Ù. ¿ì¼± ÀÛÀº Å©±â·Î Âɰ³Áø ¸Þ¼­µåµéÀº Àç»ç¿ëµÉ °¡´É¼ºÀÌ ³ô¾ÆÁö°í ±æ°Ô ´Ã¾îÁø Äڵ庸´Ù À̸§ÀÌ ¸íÈ®ÇÑ ¿©·¯ ¸Þ¼­µå¸¦ È£ÃâÇϵµ·Ï Äڵ带 ÀÛ¼ºÇϸé ÄÚµåÀÇ °¡µ¶¼ºÀÌ ³ô¾ÆÁö±â ¶§¹®ÀÌ´Ù. µû¶ó¼­ Extract Method¸¦ ¼öÇàÇÒ ¶§¿¡´Â Äڵ带 Àß°Ô Âɰ³´Â ¸ñÀû»Ó¸¸ ¾Æ´Ï¶ó Àç»ç¿ë¼º°ú °¡µ¶¼ºµµ °í·ÁÇØ¾ß ÇÑ´Ù. ƯÈ÷ ÃßÃâÇÑ ¸Þ¼­µåÀÇ ¸ñÀûÀÌ Àß µå·¯³ªµµ·Ï À̸§À» ÁöÀ» ¶§ ÁÖÀÇÇØ¾ß ÇÑ´Ù.

Extract Method ±â¹ýÀ» Àû¿ëÇÏ°Ô µÇ´Â °¡Àå ÈçÇÑ °æ¿ì°¡ ¹Ù·Î µ¥ÀÌÅ͸¦ ó¸®ÇÏ´Â ºÎºÐ°ú Ãâ·ÂÇÏ´Â ºÎºÐÀÌ ÇÑ ¸Þ¼­µå¿¡ µ¿½Ã¿¡ ÀÖÀ» ¶§ÀÌ´Ù. ÀϹÝÀûÀ¸·Î ´ÙÀ½°ú °°Àº Äڵ带 ÀÛ¼ºÇϱⰡ ½±´Ù.

public static void ParseArgument(string argument){  string [] args = argument.Split(' ');   // args ó¸® ÄÚµå´Â »ý·«  // ¡¦.   // ÀÔ·ÂµÈ ÀÎÀÚµéÀ» Ãâ·ÂÇÑ´Ù.  for ( int i = 0 ; i < args.Length; i++ )  {    Console.WriteLine ( "{0}: {1}", i, args[i] );  }}
¼Ò½º 3 - Extract Method ±â¹ýÀ» Àû¿ëÇÒ ¿¹Á¦ ÄÚµå

ÀÌ Äڵ忡¼­ 8¹øÂ° ÁÙºÎÅÍ 12¹øÂ° ÁÙ±îÁöÀÇ ÄÚµå´Â ÀÔ·ÂµÈ ÀÎÀÚ¸¦ È­¸é¿¡ º¸¿©ÁÖ±â À§ÇÑ ÄÚµå·Î ÀÎÀÚ¸¦ ºÐ¼®ÇÏ´Â ¸Þ¼­µå¿¡ Æ÷Ç﵃ Çʿ䰡 ¾ø´Ù. ´ë½Å PrintArgument¿Í °°Àº À̸§ÀÇ ¸Þ¼­µå·Î ºÐ¸®ÇÏ´Â °ÍÀÌ ÁÁ´Ù. ÀÚ, ±×·³ VSTSÀÇ ¸®ÆÑÅ丵 ±â´ÉÀ» ÀÌ¿ëÇÏ¿© ÀÌ Äڵ带 PrintArgument ¸Þ¼­µå·Î ºÐ¸®Çغ¸ÀÚ.

¿ì¼± Extract Method ±â¹ýÀ» Àû¿ëÇÒ ÄÚµå ºí·ÏÀ» ¼±ÅÃÇϰí, ¸¶¿ì½º ¿À¸¥ÂÊ ¹öưÀ» Ŭ¸¯ÇÏ¿© <±×¸² 1>°ú °°ÀÌ Refactor | Extract Method ¡¦ ¸Þ´º¸¦ ¼±ÅÃÇÑ´Ù.

±×¸² 1 - Extract Method ¸Þ´º ¼±ÅÃ

¸Þ´º¸¦ ¼±ÅÃÇϸé <±×¸² 2>¿Í °°ÀÌ »õ·Î ¸¸µé°íÀÚ ÇÏ´Â ¸Þ¼­µåÀÇ À̸§À» ÀÔ·ÂÇÒ ¼ö ÀÖ´Ù. ÇѰ¡Áö ¾Ë¾ÆµÎ¾î¾ß ÇÒ »çÇ×Àº <±×¸² 2>ÀÇ ¹Ø ºÎºÐ¿¡ ÀÖ´Â °Íó·³ VSTS¿¡¼­ ÀÚµ¿À¸·Î »õ·Î¿î ¸Þ¼­µå¿¡ Àü´ÞµÉ ¸Å°³ º¯¼ö¸¦ Ãß°¡Çϰí ÀÖ´Ù´Â Á¡ÀÌ´Ù. ¿©±â¿¡¼­´Â string[] args¶ó´Â ¸Å°³ º¯¼ö¸¦ Ãß°¡Çߴµ¥, ¿øÇÑ´Ù¸é Preview method signature ÅØ½ºÆ® »óÀÚ¸¦ Ŭ¸¯ÇÏ¿© º¯°æÇÒ ¼öµµ ÀÖ´Ù.

±×¸² 2 - Extract Method ´ëÈ­ »óÀÚ

¸Þ¼­µå À̸§À» ÀÔ·ÂÇϰí OK ¹öưÀ» Ŭ¸¯Çϸé, ´ÙÀ½ <±×¸² 3>°ú °°ÀÌ ¿ø·¡ÀÇ ¼Ò½º Äڵ忡¼­ ¼±ÅÃµÈ ÄÚµå ºí·ÏÀº PrintArgument¶ó´Â ¸Þ¼­µå·Î ÀÛ¼ºµÇ°í ÄÚµå ºí·ÏÀÌ ÀÖ´ø ¿ø·¡ÀÇ À§Ä¡¿¡´Â PrintArgument ¸Þ¼­µå¸¦ È£ÃâÇÏ´Â Äڵ尡 Ãß°¡µÈ´Ù.

±×¸² 3 - Extract Method°¡ Àû¿ëµÈ ÈÄÀÇ ÄÚµå

¾µµ¥ ¾ø´Â ¸Å°³ º¯¼ö Áö¿ì°³, Remove Parameters
Äڵ带 ÀÛ¼ºÇÏ´Ù º¸¸é óÀ½¿¡´Â »ç¿ëÇßÁö¸¸, ³ªÁß¿¡´Â »ç¿ëÇÏÁö ¾Ê°Ô µÇ´Â ¸Å°³ º¯¼öµéÀÌ Á¾Á¾ ÀÖ´Ù. ¿øÄ¢»óÀ¸·Î´Â ±×·± ¸Å°³ º¯¼öµéÀ» ã¾Æ¼­ Á¦°ÅÇØ¾ß ÇϰÚÁö¸¸, ÇÁ·Î±×·¡¸ÓµéÀÌ »ç¿ëµÇÁö ¾Ê´Â ¸Å°³ º¯¼ö¸¦ Á÷Á¢ ã¾Æ¼­ Á¦°ÅÇÏ´Â °æ¿ì´Â ã¾Æº¸±â ¾î·Æ´Ù. ¹°·Ð ±×·¸°Ô ÇÏ´Â ÇÕ´çÇÑ ÀÌÀ¯µµ ÀÖÁö¸¸, ´ëºÎºÐÀº ±× ÀÌÀ¯°¡ ÇÕ´çÇÏÁö ¾Ê´Ù. °¡Àå Å« ÀÌÀ¯´Â Áö±ÝÀº »ç¿ëÇϰí ÀÖÁö ¾ÊÁö¸¸ ¾ðÁ¨°¡ ´Ù½Ã »ç¿ëÇØ¾ß ÇÒÁöµµ ¸ð¸£±â ¶§¹®À̸ç, ¶Ç´Â ´Ù¸¥ °÷¿¡¼­ ¸Þ¼­µå¸¦ ¸¹ÀÌ È£ÃâÇϰí À־ ¸Å°³ º¯¼ö¸¦ Á¦°ÅÇϱⰡ ²Ï³ª ¹ø°Å·Ó±â ¶§¹®ÀÌ´Ù.

ÇÏÁö¸¸ ºÒÇÊ¿äÇÑ ¸Å°³ º¯¼ö¸¦ °è¼ÓÇØ¼­ »ç¿ëÇÏ°Ô µÇ¸é, ÇØ´ç ¸Þ¼­µå¸¦ »ç¿ëÇÏ´Â °³¹ßÀÚµéÀÌ °è¼ÓÇØ¼­ ºÒÇÊ¿äÇÑ ¸Å°³ º¯¼ö¸¦ Àü´ÞÇÏ´Â ¼ö°í¸¦ ÇØ¾ß Çϰí, ºÒÇÊ¿äÇÑ ¸Å°³ º¯¼ö¿¡ ´ëÇÑ ¸ñÀûÀÌ ºÒºÐ¸íÇÏ°Ô µÇ¾î °á±¹ È¥¶õÀ» ¾ß±âÇÒ ¼öµµ ÀÖ´Ù. ÀÌ·¯ÇÑ ¹®Á¦´Â ÇÁ·Î±×·¥À» À¯Áö º¸¼öÇÏ´Â ½Ã±â¿¡ ƯÈ÷ ¹®Á¦°¡ µÉ ¼ö ÀÖ´Ù.

¸¸¾à <¼Ò½º 3>¿¡¼­ ParseParameter¿¡ Àü´ÞµÇ´Â argument ¸Å°³ º¯¼ö¸¦ Ŭ·¡½ºÀÇ ¸â¹ö º¯¼ö·Î Á¤ÀÇÇÑ´Ù¸é, ´õ ÀÌ»ó ParseParameter ¸Þ¼­µå´Â argument ¸Å°³ º¯¼ö°¡ ÇÊ¿ä ¾øÀ» °ÍÀÌ´Ù(¸â¹ö º¯¼ö·Î Á÷Á¢ Á¢±ÙÀÌ °¡´ÉÇϱ⠶§¹®ÀÌ´Ù). ¸¸¾à argument ¸Å°³ º¯¼ö¸¦ Á¦°ÅÇÏ°í ½Í´Ù¸é, Extract Method ±â¹ý¿¡¼­¿Í ¸¶Âù°¡Áö·Î ¸¶¿ì½º ¿À¸¥ÂÊ ¹öưÀ» Ŭ¸¯ÇÏ¿© Refactor | Remove Parameters ¸Þ´º¸¦ ¼±ÅÃÇÑ´Ù. ParseParameter ¸Þ¼­µå´Â argument¸¦ ¸Å°³ º¯¼ö·Î Æ÷ÇÔÇϰí Àֱ⠶§¹®¿¡, <±×¸² 4>¿Í °°ÀÌ ¸Å°³ º¯¼ö¸¦ Á¦°ÅÇÒ ¼ö ÀÖ´Ù.

±×¸² 4 - Remove Parameters ´ëÈ­ »óÀÚ

¸¸¾à ¼±ÅÃÇÑ ¸Å°³ º¯¼ö¸¦ Á¦°ÅÇØÁֱ⸸ ÇÑ´Ù¸é, ±»ÀÌ VSTSÀÇ ¸®ÆÑÅ丵À» »ç¿ëÇÏÁö ¾Ê°í, ¼Ò½º Äڵ忡¼­ Á÷Á¢ ¸Å°³ º¯¼ö¸¦ Á¦°ÅÇÏ¸é µÉ °ÍÀÌ´Ù. ´ç¿¬È÷ VSTS´Â ¿ø·¡ÀÇ ¸Þ¼­µå¸¦ È£ÃâÇϰí ÀÖ´Â ¸ðµç Äڵ带 ã¾Æ¼­ »èÁ¦µÈ ¸Å°³ º¯¼ö¸¦ Á÷Á¢ Á¦°ÅÇØ ÁØ´Ù(<±×¸² 5> Âü°í). ÀÌ ¶§ ¸Å°³ º¯¼ö°¡ ½ÇÁ¦·Î »ç¿ëµÇ°í ÀÖ´ÂÁö¿¡ ´ëÇÑ ¿©ºÎ´Â °Ë»çÇÏÁö ¾Ê±â ¶§¹®¿¡, ±× ºÎºÐ¿¡ ´ëÇØ¼­´Â °³¹ßÀÚ°¡ Ã¥ÀÓÁ®¾ß ÇÑ´Ù. ¸¸¾à »ç¿ëµÇ°í ÀÖ´Â ¸Å°³ º¯¼ö¸¦ Á¦°ÅÇß´Ù¸é ´ç¿¬È÷ ÄÄÆÄÀÏ ½Ã¿¡ ¿À·ù°¡ ¹ß»ýÇÒ °ÍÀÌ´Ù.

±×¸² 5 - Remove Parameters°¡ Àû¿ëµÈ ÄÚµå

À̸§ º¯°æµµ ±ò²ûÇϰÔ, Rename
´©±º°¡¿¡°Ô "Äڵ带 Àß Á¤¸®Çϼ¼¿ä."¶ó°í ºÎŹÇÑ´Ù¸é, ¾Æ¸¶µµ ±×´Â Á¦ÀÏ ¸ÕÀú µé¿©¾²±â¸¦ ¸ÂÃß°í º¯¼ö³ª ¸Þ¼­µåÀÇ À̸§À» º¯°æÇÏ´Â ÀÛ¾÷ºÎÅÍ ½ÃÀÛÇÒ °ÍÀÌ´Ù. 0°ú 1¸¸ ÀνÄÇÏ´Â ÄÄÇ»ÅÍ ÀÔÀå¿¡¼­ º»´Ù¸é a³ª b¿Í °°Àº º¯¼ö¸¦ »ç¿ëÇØµµ ¾Æ¹«·± ¹®Á¦°¡ ¾ø°ÚÁö¸¸, »ç¶÷Àº a¿Í b ¸¸À¸·Î´Â ÀÌÇØÇÒ ¼ö ¾ø´Ù. ±×·¡¼­ temp³ª temp1°ú °°ÀÌ Àӽ÷Π»ç¿ëÇß´ø º¯¼ö¸¦ Á»´õ ÀÌÇØÇϱ⠽¬¿î À̸§À¸·Î º¯°æÇØ¾ß Çϴµ¥, ´Ü¼øÈ÷ ã¾Æ¼­ ¹Ù²Ù±âÀÇ ±â´ÉÀ» ÀÌ¿ëÇÏ´Â °Í¸¸À¸·Î´Â Äڵ尡 ¸Á°¡Áú ¼ö ÀÖÀ¸¹Ç·Î, ÀÌ·² ¶§¿¡µµ VSTSÀÇ ¸®ÆÑÅ丵 ±â´ÉÀ» Ȱ¿ëÇÏÀÚ.

<¼Ò½º 3>¿¡¼­ for¹®¿¡¼­ »ç¿ëµÈ i¸¦ index·Î ¹Ù²ãº¸±â·Î ÇÏÀÚ. ¹°·Ð ¿¹Á¦ Äڵ尡 ºñ±³Àû °£´ÜÇϱ⠶§¹®¿¡ i°¡ »ç¿ëµÈ Äڵ带 ¸ðµÎ ã¾Æ¼­ Á÷Á¢ ¹Ù²Ù¾îµµ µÇ°ÚÁö¸¸, ¸®ÆÑÅ丵 ±â´ÉÀ» ÀÌ¿ëÇÏ¸é ¹öư Ŭ¸¯ ÇѹøÀ¸·Î ¸ðµç i¸¦ index·Î º¯°æÇÒ ¼ö ÀÖ´Ù. ¸¶Âù°¡Áö·Î ÄÚµå ºí·ÏÀ» ¼±ÅÃÇÏ°í ¸¶¿ì½º ¿À¸¥ÂÊ ¹öưÀ» Ŭ¸¯ÇÏ¿© Refactor | Rename ¸Þ´º¸¦ ¼±ÅÃÇÑ´Ù. Rename ´ëÈ­ »óÀÚ¿¡¼­ i ´ë½Å index¸¦ ÀÔ·ÂÇÑ ÈÄ OK ¹öưÀ» Ŭ¸¯ÇÏ¸é ´ÙÀ½°ú °°ÀÌ index·Î º¯°æµÈ Äڵ带 È®ÀÎÇÒ ¼ö ÀÖ´Ù.

±×¸² 6 - Preview Changes ´ëÈ­ »óÀÚ

¸®ÆÑÅ丵ÀÇ Àû±ØÀûÀΠȰ¿ëÀÌ Çʼö
ºñ·Ï ÀÌ ±ÛÀÇ ¼­µÎ¿¡¼­ ¸®ÆÑÅ丵¿¡ ´ëÇØ¼­ °£´ÜÈ÷ ¼Ò°³ÇÏ¿´Áö¸¸, ¸®ÆÑÅ丵¿¡ ´ëÇØ¼­ °¡Àå Àß ¼Ò°³Çϰí Àִ åÀº Martin Fowler°¡ ÀÛ¼ºÇÑ Refactoring: Improving the Design of Existing Code (Addison Wesley, 1999)ÀÌ´Ù. ÀÌ ±ÛÀº ¸®ÆÑÅ丵 ÀÚü¿¡ ´ëÇÑ ¼Ò°³°¡ ¾Æ´Ï¶ó VSTS¿¡¼­ Áö¿øÇÏ´Â ¸®ÆÑÅ丵 ±â´É¿¡ ´ëÇÑ ³»¿ëÀ̱⠶§¹®¿¡, ¸®ÆÑÅ丵 ±â´ÉÀ» »ç¿ëÇϱ⿡ ¾Õ¼­ RefactoringÀ» ÀÐ°í ¿Ã¹Ù¸¥ ¸®ÆÑÅ丵 Àû¿ë ¹æ¹ýÀ» ÀÌÇØÇϵµ·Ï ÇÑ´Ù. ºñ·Ï VSTS°¡ Refactoring¿¡¼­ ¼Ò°³ÇÏ´Â ¸ðµç ¸®ÆÑÅ丵 ±â¹ýÀ» Áö¿øÇÏÁö´Â ¾ÊÁö¸¸, ¾ÕÀ¸·Î ¿©·¯ °¡Áö ´Ù¾çÇÑ ¸®ÆÑÅ丵 ±â¹ýÀÌ Ãß°¡µÉ °¡´É¼ºÀÌ ÀÖÀ¸¸ç, VSTS°¡ ÇöÀç Á¦°øÇÏ´Â ±â´É¸¸À¸·Îµµ Á¡Â÷ÀûÀÎ ÄÚµå °³¼±ÀÌ ÃæºÐÈ÷ °¡´ÉÇÏ´Ù°í º»´Ù. ƯÈ÷ 'º¹»çÇØ¼­ ºÙ¿© ³Ö±â' ½Å°øÀ» ÀÚÁÖ »ç¿ëÇÏ´Â °³¹ßÀÚ¿¡°Ô´Â ¸®ÆÑÅ丵ÀÌ ¸Å¿ì À¯¿ëÇÒ °ÍÀÌ´Ù.

*Ãâó : ZDNet


     
  System.IO ³×ÀÓ½ºÆäÀ̽ºÀÇ Àç¹ß°ß [807]   06¡¤07¡¤19 4428
  ¾îÇø®ÄÉÀ̼ÇÀÇ ½Å¼ÓÇÑ °³¹ß ¹× ¹èÆ÷ e-seminar   06¡¤04¡¤01 1076
Copyright 1999-2025 Zeroboard / skin by GGAMBO