클래스 및 멤버 리팩터링

Visual Studio 클래스 멤버를 다시 구성하고 메서드 서명을 수정하기 위한 몇 가지 리팩터링을 제공합니다. 빠른 작업 및 리팩터링 메뉴(Ctrl+.)를 통해 이러한 리팩터링에 액세스할 수 있습니다.

메서드 서명 변경

: C#, Visual Basic

이 리팩터링을 사용하면 메서드의 매개 변수를 제거, 다시 정렬 또는 추가하여 모든 호출 사이트를 자동으로 업데이트할 수 있습니다.

  1. 수정할 메서드의 이름 또는 해당 사용 중 하나에 텍스트 커서를 강조 표시하거나 배치합니다.

    • C#:

      강조 표시된 코드 C#의 스크린샷.

    • Vb:

      강조 표시된 코드 Visual Basic.

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

    • Keyboard
      • Ctrl+R을 누른 다음 Ctrl+V를 누릅니다. (선택한 프로필에 따라 바로 가기 키가 다를 수 있습니다.)
      • Ctrl 키를 누릅니다+.빠른 작업 및 리팩터링 메뉴를 트리거하고 미리 보기 창 팝업에서 서명 변경을 선택합니다.
    • 마우스
      • 리팩터링 > 편집 > 매개 변수 제거를 선택합니다.
      • 리팩터 > 링 다시 정렬 매개 변수 편집>을 선택합니다.
      • 코드를 마우스 오른쪽 단추로 클릭하고 빠른 작업 및 리팩터링 메뉴를 선택하고 미리 보기 창 팝업에서 서명 변경을 선택합니다.
  3. 표시되는 서명 변경 대화 상자에서 오른쪽의 단추를 사용하여 메서드 서명을 변경할 수 있습니다.

    서명 변경 대화 상자의 스크린샷.

    버튼 설명
    위쪽/아래쪽 선택한 매개 변수를 목록 위아래로 이동
    추가 목록에 새 매개 변수 추가
    Remove 목록에서 선택한 매개 변수 제거
    복원 선택한 교차된 매개 변수를 목록으로 복원

    팁 (조언)

    미리 보기 참조 변경 확인란을 사용하여 결과를 커밋하기 전에 확인할 수 있습니다.

  4. 서명 변경 대화 상자에서 추가를 선택하면 매개 변수 추가 대화 상자가 열립니다. 매개 변수 추가 대화 상자를 사용하면 형식 이름과 매개 변수 이름을 추가할 수 있습니다. 매개 변수를 필수 또는 기본값으로 선택적으로 만들도록 선택할 수 있습니다. 그런 다음 호출 사이트에서 값을 추가하고 해당 값에 대해 명명된 인수를 선택하거나 TODO 변수를 도입할 수 있습니다. TODO 변수는 각 오류를 방문하여 각 호출 사이트를 독립적으로 살펴보고 전달할 항목을 결정할 수 있도록 TODO를 코드에 넣습니다. 선택적 매개 변수의 경우 호출 사이트를 완전히 생략하는 옵션이 있습니다.

    매개 변수 추가 대화 상자의 스크린샷 - C#.

  5. 매개 변수 추가가 완료되면 확인을 눌러 변경 내용을 미리 봅니다.

    추가된 매개 변수를 보여 주는 서명 변경 대화 상자의 스크린샷

멤버 위로 끌어오기

: C#, Visual Basic

이 리팩터링에서는 멤버를 기본 형식으로 끌어오므로 인터페이스의 다른 구현에서도 해당 멤버를 상속합니다.

  1. 구현된 인터페이스의 멤버에 커서를 놓습니다.

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

    멤버 끌어오기 스크린샷

  3. 멤버를 기본 형식으로 끌어오기를 선택합니다.

  4. 대화 상자에서 선택한 인터페이스에 추가할 멤버를 선택합니다.

    멤버 끌어오기 스크린샷

  5. 확인을 선택합니다. 선택한 멤버가 인터페이스로 끌어올 수 있습니다.

    멤버 끌어오기 완료 스크린샷

클래스 추상화

: C#, Visual Basic

이 리팩터링에서는 추상이 아닌 클래스에 추상 메서드를 작성할 때 자동으로 클래스를 추상으로 표시합니다.

  1. 추상 메서드에 캐리트를 놓습니다.

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

  3. 클래스 'abstract' 만들기를 선택합니다.

    클래스 추상화 만들기의 스크린샷.

멤버를 정적으로 만들기

적용 대상: C#

이 리팩터링에서는 비정적 멤버를 정적 멤버로 변환하여 코드가 격리되었음을 분명히 하여 가독성을 향상합니다.

  1. 멤버 이름에 케어를 배치합니다.

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

    멤버를 정적으로 만드는 스크린샷

  3. 정적 만들기를 선택합니다.

로컬 함수를 메서드로 변환

적용 대상: C#

이 리팩터링에서는 함수를 포함하는 메서드 외부에서 호출해야 하는 경우에 유용한 클래스 메서드로 로컬 함수를 변환합니다.

  1. 로컬 함수에 커서를 놓습니다.

    로컬 함수를 메서드 코드 샘플로 변환의 스크린샷

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

    로컬 함수를 메서드 코드 수정 샘플로 변환의 스크린샷

  3. 리팩터링을 적용하려면 Enter 키를 누릅니다.

    로컬 함수를 메서드로 변환 결과 샘플의 스크린샷

정적 로컬 함수 리팩터링

적용 대상: C#

이 섹션에서는 로컬 함수를 정적으로 만들고 변수를 정적 로컬 함수에 명시적으로 전달하는 두 가지 관련 기능을 설명합니다.

로컬 함수를 정적으로 만들기

이 리팩터링으로 인해 로컬 함수가 정적이며 함수 외부에 정의된 변수를 함수의 선언 및 호출에 전달합니다. 정적 로컬 함수는 코드를 격리하고 단일 메서드에서만 호출되는 정적 함수를 사용하여 클래스의 오염을 방지하여 가독성을 향상시킵니다.

  1. 로컬 함수 이름에 caret를 배치합니다.

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

    로컬 함수 정적 만들기의 스크린샷

  3. 로컬 함수 '정적' 만들기를 선택합니다.

정적 로컬 함수에 변수를 명시적으로 전달합니다.

이 빠른 작업은 변수를 로컬 정적 함수에 명시적으로 전달합니다. 로컬 함수가 정적이되 외부에서 초기화된 변수를 계속 사용하려는 경우에 유용합니다.

  1. 정적 로컬 함수에서 사용되는 변수에 캐리트를 놓습니다.

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

    정적 로컬 함수에 명시적으로 변수 전달 스크린샷

  3. 로컬 정적 함수에서 변수 전달을 명시적으로 선택합니다.