1.Refactoring 이란?


VS.NET 2005의 생산성을 높여주기 위해서 지원하게 된 기능입니다. 이름에서 느낄수 있듯이 바로 코드 자동화 기능이 추가 된 것이죠. 소스 코드에 있는 변수의 이름을 일관적으로 바꾸는 작업이나 프로세스를 자동화하는 등의 여러 자동화 작업등을 이용할 수 있습니다. 아래 그림을 살펴 봅시다.



닷넷2005 편집기에서 오른쪽 마우스를 눌러보면 Refactor라는 메뉴가 추가 되어있고, 오른쪽에 여러 기능들이 있습니다. 바로 추가된 코드 자동화 기능으로 정의 하셔도 크게 문제 없을것 같습니다. VS2005를 사용하면서 반드시 알아 두어야 할 기능 들로 생각이 듭니다.

이번 아티글에서는 Refactoring의 3가지 기능을 살펴보고 다음 아티글에서 나머지 기능을 알아보도록 하겠습니다.

2.Rename..
기능그 첫번째 기능으로 Rename 기능을 살펴 보도록 하겠습니다. 이 기능은 기존에 자주 사용해오던 [찾기]->[바꾸기]->[모두바꾸기]의 기능과 많은 연관이 있어 보입니다_-_ㅋ
Rename은 특정 변수의 변수명을 일괄적으로 변경해 줍니다.소스및 주석에서의 이름도 변경이 됩니다. 이것은 단순히 텍스트를 인식해서 바꾸는 것이 아닌 쓰여진 변수의 이름만 Rename 처리를 합니다.
아래 예제를 보면서 Rename 기능을 살펴 보도록 하겠습니다.
 
단축키Ctrl + R + R

DEMO

class Program
{
    public string strHoons = "Refatoring";

    static void Main(string[] args)

    {

        strHoons += " World!!";

        Console.WriteLine(strHoons);

    }

}


코드를 살펴보면 단순히 strHoons라는 변수를 사용하였고, strHoons를 출력 하였습니다.
그런데 왠지 Hoons라는 변수이름이 맞지 않는것 같습니다._-_; 우리는 여기서 strRefactor 라고 변경을 해보도록 합시다

이제 strHoons변수에서 오른쪽 마우스를 누릅니다. 그리고 Refactor를 선택해 봅시다.


Rename을 선택합니다.

 

NewName에 새로운 이름을 작성합니다. (strRefactor)


새로운 이름을 적게 되면 Preview 마법사가 실행되며, 적용 여부를 결정하게 됩니다.

3. Extract Method

기능Extract Method.. 조금 맘에 기능입니다.
이 Extract Method 기능은 자신이 원하는 코드를 Block으로 잡으면 그 부분을 메서드로 바꾸어 주는 것입니다.
이 Extract Method는 단순히 선택 Block을 Void형 메서드로 만들어 버리는 것이 아니라 코드 상황에 따라 특정 Return값을 뱉어 내는 메서드를 만들어 버립니다.

단축키Ctrl+R+M

DEMO


특정 블락을 드래그 하여 Extract Method를 실행합니다.


 
그리고 메소드명을 적습니다. 확인을 눌러 결과를 확인합니다.
 

 class Program
{
    public string strRefactor = "Refatoring";

    static void Main(string[] args)
    {
        WriteRefactor();
    }
 

    private static void WriteRefactor()
    {
        strRefactor += " World!!";
        Console.WriteLine(strRefactor);
    }
}


그럼 아래에 WriteRefactor() 메서드가 작성되어 지고,
기존 코드는 메서드쪽으로 옮겨 가게 되는것을 볼수 있을 것입니다.
이번에는 다른 예를 살펴 봤습니다.
 

 static void Main(string[] args)

{

    strRefactor += " World!!";

    Console.WriteLine(strRefactor);

}

 ▼ " World!!" 부분을 드래그 하여 Extract Method를 실행해 보았습니다.

static void Main(string[] args)

{

    strRefactor += ReturnStr();

    Console.WriteLine(strRefactor);

}

private static string ReturnStr()

{

    return " World!!";

}


결과를 보시면 이렇게 string 형을 리턴하는 메서드를 만들어 냅니다.

4. Encapsulate Field

기능Encapsulate Field!! 개인적으로 가장 맘에 드는 기능입니다. 자동 캡슐화!! public 공적 변수를 변환해 자동으로 프로퍼티를 생성해 줍니다.
잘 이해가 안되는 분들, 이제 눈으로 기능을 확인해 봅시다..^^


단축키
Ctrl + R + F (이 기능 만큼은 단축키를 외웁시다.)

기능
 

프로퍼티명을 적어 줍니다.


결과가 기대 됩니다.!! 두근두근
이제 결과를 살펴 봅시다.
 

 public string strRefactor = "Refatoring";

▼ 실행 결과

private string strRefactor = "Refatoring";

public
string StrRefactor
{

    get { return strRefactor; }
    set { strRefactor = value; }
}


놀랍지 않습니까?! 단순히 Ctrl+R+F를 실행한 결과로 자동으로 캡슐화 기능을 실행시켜 프로퍼티가 탄생합니다.

5. 정리
예전 닷넷 2002에서 2003이 발표되었던 때와는 전혀 분위기가 다르군요. 2005의 발표는 정말 많은 기대가 됩니다.
이번 아티글에서는 Refactory 3가지 기능에 대해서 알아 봤습니다. 다음 아티글에서는 Refactory의 나머지 기능에 대해서 다루어 보도록 하겠습니다.

참조: http://www.refactoring.com
http://msdn.microsoft.com/library/en-us/dnvs05/html/VS05_refac.asp?frame=true 



  작성자 : HOONS(박경훈)
  이메일 : tajopkh@hanmail.net
  홈페이지 : http://www.hoonsbara.com 

+ Recent posts