1.Extract Interface


기능

이름대로 해석 하자면 인터페이스를 끌어낸다는 것!! 이름에서 예상 할 수 있었듯이 이 기능은 한 클래스안의 메서드들을 선택하여 하나의 인터페이스로 정의 하여 줍니다. 아키텍처를 설계하여 프로그래밍하는 경우가 그다지 일반적이 않습니다. 하지만 인터페이스는 프로그램을 더욱더 탄탄히 하기 위해서 반드시 도입 되어야 할 개념입니다. 그렇기 때문에 자동 인터페이스 구현 기능을 가지는 Extract Interface이 유용하게 사용 될 것으로 예상 됩니다..

단축키
Ctrl + R + I

Demo

데모를 살펴 봅시다. Radio Class를 만들었고, Start와 Stop메서드를 만들었습니다. 그리고 Refactor의 Extract Interface를 실행하였습니다.

 


그럼 아래와 같은 설정창이 뜨게 됩니다. 여기서 우리는 인터페이스 이름을 정의할 수 있습니다. 그리고 새로 생성될 인터페이스의 파일명을 적어 줍니다. 마지막으로 인터페이스를 구현할 메서드를 선택해줍니다.

 

 

class Radio
{
    public void Start(string gogo)
    {
        Console.Write(gogo);
    }
 
    public void Stop(string stop)
    {
        Console.Write(stop);
    }
}

▼실행결과(Extract Interface)

class Radio : Refactoring.IRadio
{
    public void Start(string gogo)
    {
        Console.Write(gogo);
    }
 
    public void Stop(string stop)
    {
        Console.Write(stop);
    }
}

생성된 iRadio.cs 파일
interface IRadio
{
    void Start(string gogo);
    void Stop(string stop);
}



2.Promote Local Variable to Parameter
 

기능
만약 내가 만든 메서드 안에 파라메터로 받아서 쓰고 싶은 로컬 변수가 있습니다. 이때 이 기능을 사용하게 되면 로컬 변수를 자동으로 파라메터로 변환해 줍니다. 우리가 손수 고쳐야 하는 어려움을 보다 쉽게 해결 할 수 있다는 것입니다. 어떻게 이런것이 가능한지 데모를 통해 알아보도록 합시다.

단축키
Ctrl+R+P (beta2에서는 구현안되어있음)

DEMO
아래는 파일을 저장하는 코드입니다. Main메서드에서 FileSave()를 부릅니다. 그런데 여기서 저장되는 파일경로(strPath)를 상황에 따라서 바꾸어 저장하고 싶어 졌습니다. 이러한 상황이라면 선언한 로컬 변수를 파라메터로 바꾸어야 할듯 합니다.

static void Main(string[] args)
{
    FileSave();//파일을저장하자.
}

private static void FileSave()
{
    string strPath = @"c\Refactor";
    /*  strPath경로로파일을저장하는코드. */
    Console.WriteLine("{0}로저장완료", strPath);
}


바로 이러한 상황일때 우리는 Promote .. 기능을 실행하는 것입니다.

 

▼실행결과

static void Main(string[] args)
{
    FileSave(@"c\Refactor");//파일을저장하자.
}
 
private static void FileSave(string strPath)
{
    /*  strPath경로로파일을저장하는코드. */
    Console.WriteLine("{0}로저장완료", strPath);
}



3.정리

오늘은 Refactoring의 2개의 기능에 대해서 정리해 보았습니다.
동영상 단 몇분이면 끝날 얘기지만 이렇게 글로 설명하려니 매우 어렵네요. 이참에 캠따시아를 깔아 녹화라는 것을 시도해 보아야겠습니다.
다음 아티글에서는 Refactoring의 나머지 기능들을 몽땅 정리해 보겠습니다.


참조: 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