다음을 통해 공유


추출 및 인라인 리팩터링

Visual Studio 코드베이스를 간소화하기 위해 코드를 새 구문으로 추출하거나 코드를 인라인화하기 위한 몇 가지 리팩터링을 제공합니다. 빠른 작업 및 리팩터링 메뉴(Ctrl+.)를 통해 이러한 리팩터링에 액세스할 수 있습니다.

추출 방법

: C#, Visual Basic

이 리팩터링에서는 코드 조각을 자체 메서드로 변환하여 여러 위치에서 동일한 코드를 호출해야 하는 경우 중복을 줄입니다.

  1. 추출할 코드를 강조 표시합니다.

    • C#:

      Program 클래스에 대한 C# 코드의 스크린샷 해당 클래스의 Main 함수에서 코드 줄이 강조 표시됩니다.

    • Visual Basic:

       Main Sub에 대한 Visual Basic 코드 스크린샷입니다. 해당 Sub에서 코드 줄이 강조 표시됩니다.

  2. 다음으로 다음 중 하나를 수행합니다.

    • Keyboard
      • Ctrl+R을 누른 다음 Ctrl+M을 누릅니다. (선택한 프로필에 따라 바로 가기 키가 다를 수 있습니다.)
      • Ctrl 키를 누릅니다+.빠른 작업 및 리팩터링 메뉴를 트리거하고 미리 보기 창 팝업에서 메서드 추출을 선택합니다.
    • 마우스
      • 리팩터 > 링 추출 방법 편집>을 선택합니다.
      • 코드를 마우스 오른쪽 단추로 클릭하고 추출 > 메서드 리팩터링 >선택
      • 코드를 마우스 오른쪽 단추로 클릭하고 빠른 작업 및 리팩터링 메뉴를 선택하고 미리 보기 창 팝업에서 메서드 추출 을 선택합니다.

    메서드가 즉시 만들어집니다. 이제 새 이름을 입력하여 메서드의 이름을 바꿀 수 있습니다.

    팁 (조언)

    IDE의 오른쪽 위에 표시되는 이름 바꾸기 상자의 확인란을 사용하여 저장하기 전에 변경 내용을 미리 볼 뿐만 아니라 이 새 이름을 사용하도록 메모 및 기타 문자열을 업데이트할 수도 있습니다.

    • C#:

      Program 클래스에 대한 C# 코드의 스크린샷 메서드 이름이 강조 표시되고 팝업 이름 바꾸기 창이 열립니다.

    • Visual Basic:

      Main Sub에 대한 Visual Basic 코드 스크린샷입니다. 메서드 이름이 강조 표시되고 팝업 이름 바꾸기 창이 open.

  3. 변경 내용이 마음에 들면 적용 단추를 선택하거나 Enter 키를 누르면 변경 내용이 커밋됩니다.

로컬 함수 추출

적용 대상: C#

이 리팩터링에서는 기존 메서드의 코드 조각을 로컬 함수로 변환합니다. 추출된 코드는 동일한 메서드 내에서만 호출해야 하는 경우에 유용합니다.

  1. 추출할 코드를 강조 표시합니다.

  2. Ctrl 키를 누릅니+. 빠른 작업 및 리팩터링 메뉴를 트리거합니다.

  3. 로컬 함수 추출을 선택합니다.

     선이 강조 표시된 Visual Studio 코드 창의 스크린샷입니다. 빠른 작업 및 리팩터링 메뉴가 열리고 로컬 함수 추출이 선택됩니다.

기본 클래스 추출

: C#, Visual Basic

이 리팩터링에서는 선택한 클래스의 멤버를 새 기본 클래스로 추출합니다. 상속을 통해 클래스 간에 멤버를 공유하려는 경우에 유용합니다.

  1. 클래스 이름 또는 강조 표시된 멤버에 케어트를 놓습니다.

  2. Ctrl 키를 누릅니+. 빠른 작업 및 리팩터링 메뉴를 트리거합니다.

  3. 새 기본 클래스로 멤버 상향 이동을 선택합니다.

    기본 클래스 추출 대화 상자의 스크린샷

기본 클래스 추출 대화 상자가 열리고 기본 클래스의 이름과 배치할 위치를 지정할 수 있습니다. 새 기본 클래스로 전송할 멤버를 선택하고 추상 만들기 열에서 확인란을 선택하여 멤버를 추상화하도록 선택할 수 있습니다.

인터페이스 추출

: C#, Visual Basic

이 리팩터링에서는 클래스, 구조체 또는 인터페이스의 기존 멤버를 사용하여 인터페이스를 만들어 다른 형식이 공통 서명을 공유할 수 있도록 합니다.

  1. 클래스 이름에 커서를 놓습니다.

    • C#:

      인터페이스 추출에 대해 강조 표시된 코드의 스크린샷 - C#.

    • Visual Basic:

       강조 표시된 코드 스크린샷 - Visual Basic.

  2. 다음으로, 다음 작업 중 하나를 수행합니다.

    • Keyboard
      • Ctrl+R을 누른 다음 Ctrl+I를 누릅니다. (선택한 프로필에 따라 바로 가기 키가 다를 수 있습니다.)
      • Ctrl 키를 누릅니다+.빠른 작업 및 리팩터링 메뉴를 트리거하고 미리 보기 창 팝업에서 인터페이스 추출을 선택합니다.
    • 마우스
      • 리팩터 > 링 추출 인터페이스 편집>을 선택합니다.
      • 클래스의 이름을 마우스 오른쪽 단추로 클릭하고 빠른 작업 및 리팩터링 메뉴를 선택하고 미리 보기 창 팝업에서 인터페이스 추출 을 선택합니다.
  3. 팝업되는 인터페이스 추출 대화 상자에서 다음과 같은 정보를 입력합니다.

    인터페이스 추출 스크린샷

    분야 설명
    새 인터페이스 이름 만들 인터페이스의 이름입니다. 이름은 기본적으로 IClassName으로 설정됩니다. 여기서 ClassName 은 위에서 선택한 클래스의 이름입니다.
    새 파일 이름 인터페이스를 포함할 생성된 파일의 이름입니다. 인터페이스 이름과 마찬가지로 이 이름은 기본적으로 IClassName으로 설정됩니다. 여기서 ClassName 은 위에서 선택한 클래스의 이름입니다. 현재 파일에 추가 옵션을 선택할 수도 있습니다.
    공용 멤버를 선택하여 인터페이스를 형성합니다. 인터페이스로 추출할 항목입니다. 원하는 만큼 선택할 수 있습니다.
  4. 확인을 선택합니다.

    인터페이스는 지정된 이름의 파일에 만들어집니다. 또한 선택한 클래스는 해당 인터페이스를 구현합니다.

    • C#:

      결과 클래스의 스크린샷 - C#.

      결과 인터페이스의 스크린샷 - C#.

    • Visual Basic:

       결과 클래스의 스크린샷 - Visual Basic.

       결과 인터페이스 스크린샷 - Visual Basic.

인라인 메서드

: C#, Visual Basic

이 리팩터링에서는 단일 문 본문 내의 정적, 인스턴스 또는 확장 메서드의 사용을 원래 메서드 선언을 제거하는 옵션으로 해당 구현으로 바꿉니다.

  1. 메서드의 사용량에 대한 케어트를 배치합니다.

  2. Ctrl 키를 누릅니+. 빠른 작업 및 리팩터링 메뉴를 트리거합니다.

  3. 다음 옵션 중 하나를 선택합니다.

    인라인 메서드 선언을 제거하려면 인라인 <QualifiedMethodName> 을 선택합니다.

     '인라인 'CreateWidget()'을 선택하고 C# 코드 변경 내용이 표시된 Visual Studio 빠른 작업 및 리팩터링 메뉴 스크린샷

    인라인을 선택하고 <QualifiedMethodName> 원래 메서드 선언을 유지합니다.

     '인라인 변환 및 'CreateWidget()'을 선택한 상태로 유지하고 C# 코드 변경 내용이 표시된 Visual Studio 빠른 작업 및 리팩터링 메뉴 스크린샷.

인라인 임시 변수

: C#, Visual Basic

이 리팩터링에서는 임시 변수를 제거하고 대신 해당 값으로 대체하여 임시 변수가 코드를 이해하기 어렵게 만들 때 코드를 간소화합니다.

  1. 인라인 처리할 임시 변수 내부에 텍스트 커서를 강조 표시하거나 배치합니다.

    • C#:

      인라인 임시 변수에 대해 강조 표시된 코드의 스크린샷 - C#.

    • Visual Basic:

       강조 표시된 코드의 스크린샷- Visual Basic.

  2. 다음으로 다음 중 하나를 수행합니다.

    • Keyboard
      • Ctrl 키를 누릅니+. 빠른 작업 및 리팩터링 메뉴를 트리거합니다.
    • 마우스
      • 코드를 마우스 오른쪽 단추로 클릭하고 빠른 작업 및 리팩터링 메뉴를 선택합니다.
  3. 미리 보기 창 팝업 에서 인라인 임시 변수 를 선택합니다.

    변수가 제거되고 해당 사용량이 변수 값으로 대체됩니다.

    • C#:

      인라인 결과 - C#의 스크린샷.

    • Visual Basic:

       인라인 결과의 스크린샷 - Visual Basic.