이 출시되었습니다! 11월의 새로운 기능 및 수정 사항을 읽어보세요.

C# 빠른 작업 및 리팩터링

Visual Studio Code는 소스 코드를 리팩터링하는 다양한 방법과 코딩 중에 코드를 생성하고 문제를 해결하는 빠른 수정을 제공합니다. 액세스하려면 나타나는 '전구' 아이콘을 클릭하거나 빠른 수정 명령 ⌘. (Windows, Linux Ctrl+.)을 사용하여 빠른 수정 및 리팩터링 옵션 목록을 표시합니다. 편집기를 마우스 오른쪽 버튼으로 클릭하고 리팩터링 ⌃⇧R (Windows, Linux Ctrl+Shift+R)을 선택하여 리팩터링 옵션만 표시할 수도 있습니다.

지원되는 리팩터링 및 빠른 수정

await 추가

내용: 함수 호출에 await 키워드를 추가합니다.

언제: 비동기 메서드 내에서 함수를 호출할 때.

방법

  1. 함수 호출에 캐럿을 놓습니다(대부분 빨간색으로 밑줄이 그어져 있을 것입니다).
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. await 추가를 선택합니다.

Add await example

멤버에서 생성자 매개변수 추가

내용: 선택한 클래스 멤버를 기반으로 매개변수가 있는 새 생성자를 생성합니다.

언제: 새 생성자를 도입하고 모든 올바른 매개변수로 자동으로 선언하고 싶을 때.

이유: 사용하기 전에 생성자를 선언할 수 있지만 이 기능은 자동으로 생성합니다.

방법

  1. 생성자에서 매개변수로 추가하려는 클래스 멤버를 강조 표시합니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 생성자 (, , ) 생성을 선택합니다.

Add constructor parameters from members example

DebuggerDisplay 특성 추가

내용: DebuggerDisplay 특성은 디버거 변수 창에서 개체, 속성 또는 필드가 표시되는 방식을 제어합니다.

언제: 속성을 고정하려는 경우 코드를 프로그래밍 방식으로.

이유: 속성을 고정하면 디버거 내에서 해당 속성을 개체의 속성 목록 맨 위로 올리는 방식으로 개체를 빠르게 검사할 수 있습니다.

방법

  1. 형식, 대리자, 속성 또는 필드에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누르고 DebuggerDisplay 특성 추가를 선택합니다.
  3. DebuggerDisplay 특성이 기본 ToString()을 반환하는 자동 메서드와 함께 추가됩니다.

Add DebuggerDisplay attribute example

명시적 캐스트 추가

내용: 사용량에 따라 식에 명시적 캐스트를 자동으로 추가할 수 있습니다.

언제: 식에 명시적 캐스트를 추가해야 하고 자동으로 올바르게 할당하고 싶을 때.

이유: 수동으로 식에 명시적 캐스트를 추가할 수 있지만 이 기능은 코드 컨텍스트에 따라 자동으로 추가합니다.

방법

  1. 오류에 캐럿을 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 명시적 캐스트 추가를 선택합니다.

파일 헤더 추가

내용: EditorConfig를 사용하여 기존 파일, 프로젝트 및 솔루션에 파일 헤더를 추가합니다.

언제: 파일, 프로젝트 및 솔루션에 파일 헤더를 쉽게 추가하려는 경우.

이유: 팀에서 저작권 목적으로 파일 헤더를 포함하도록 요구하는 경우.

방법

  1. 프로젝트나 솔루션에 EditorConfig가 없는 경우 추가합니다.
  2. EditorConfig 파일에 다음 규칙을 추가합니다: file_header_template.
  3. 규칙의 값을 적용하려는 헤더 텍스트와 같도록 설정합니다. 파일 이름을 나타내는 자리 표시자로 {fileName}을 사용할 수 있습니다.
  4. 모든 C# 파일의 첫 번째 줄에 캐럿을 놓습니다.
  5. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  6. 파일 헤더 추가를 선택합니다.

누락된 using/가져오기 추가

내용: 복사하여 붙여넣은 코드에 필요한 가져오기 또는 using 지시문을 즉시 추가할 수 있습니다.

언제: 프로젝트의 다른 부분이나 다른 소스에서 코드를 복사하여 새 코드에 붙여넣는 것이 일반적입니다. 이 빠른 작업은 복사하여 붙여넣은 코드에 대한 누락된 가져오기 지시문을 찾아 추가하도록 안내합니다. 이 코드 수정은 프로젝트 간의 참조를 추가할 수도 있습니다.

이유: 빠른 작업이 필요한 가져오기를 자동으로 추가하므로 코드가 필요한 using 지시문을 수동으로 복사할 필요가 없습니다.

방법

  1. 필요한 using 지시문을 포함하지 않고 파일을 새 파일로 복사하여 붙여넣습니다. 결과 오류에는 누락된 using 지시문을 추가하는 코드 수정이 동반됩니다.
  2. 빠른 작업 및 리팩터링 메뉴를 열려면 ⌘. (Windows, Linux Ctrl+.)을 선택합니다.
  3. 누락된 참조를 추가하려면 <your reference> 사용을 선택합니다.

Add missing  / imports example

명명된 인수 추가

내용: 함수 호출의 지정된 매개변수 값에 명명된 인수를 추가합니다.

언제: 매개변수가 많은 메서드가 있는 경우 명명된 인수를 추가하여 코드를 더 읽기 쉽게 만들 수 있습니다.

방법

  1. 함수 호출 내의 매개변수에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 인수 이름 추가 <parameter name>을 선택합니다.

Add named argument example

익명 형식을 클래스로 변환

내용: 익명 형식을 클래스로 변환합니다.

언제: 클래스에서 계속 빌드하고 싶은 익명 형식이 있는 경우.

이유: 익명 형식은 로컬에서만 사용하는 경우 유용합니다. 코드가 성장함에 따라 클래스로 승격하는 쉬운 방법이 있으면 좋습니다.

방법

  1. 익명(var) 형식에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 클래스로 변환을 선택합니다.

Convert anonymous type to class example

자동 속성 및 전체 속성 간 변환

내용: 자동 구현 속성과 전체 속성 간에 변환합니다.

언제: 속성 로직이 변경된 경우.

이유: 자동 구현 속성과 전체 속성 간에 수동으로 변환할 수 있지만 이 기능은 자동으로 작업을 수행합니다.

방법

  1. 속성 이름에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 다음 두 가지 옵션 중 하나를 선택합니다.

전체 속성으로 변환을 선택합니다.

Convert to full property example

자동 속성 사용을 선택합니다.

Use auto property example

직접 캐스트 및 'as' 식 간 변환

내용: 변수를 일반 캐스트와 as 키워드를 사용한 try 캐스트 간에 변환합니다.

언제: 캐스트가 특정 시나리오(as)에서 실패할 것으로 예상하거나 캐스트가 실패할 것으로 전혀 예상하지 않는 경우(직접 캐스트).

방법

  1. 변수에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 다음 두 가지 옵션 중 하나를 선택합니다.

캐스트로 변경을 선택합니다.

Change to cast example

as 식으로 변경을 선택합니다.

Change to  expression example

for 루프 및 foreach 문 간 변환

내용: 코드에 for 루프가 있는 경우 이 리팩터링을 사용하여 foreach 문으로 변환할 수 있습니다.

이유: for 루프를 foreach 문으로 변환하려는 이유는 다음과 같습니다.

  • 루프 내의 로컬 루프 변수를 인덱스로 사용하여 항목에 액세스하는 것 외에는 사용하지 않습니다.
  • 코드를 단순화하고 초기화, 조건 및 반복기 섹션의 논리 오류 가능성을 줄이고 싶습니다.

foreach 문을 for 루프로 변환하려는 이유는 다음과 같습니다.

  • 루프 내에서 로컬 루프 변수를 항목 액세스 이상의 용도로 사용하려고 합니다.
  • 다차원 배열을 반복하고 배열 요소에 대해 더 많은 제어를 원합니다.

방법

  1. foreach 또는 for 키워드에 캐럿을 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 다음 두 가지 옵션 중 하나를 선택합니다.

for로 변환을 선택합니다.

Convert to  example

foreach로 변환을 선택합니다.

Convert to

Get 메서드 및 속성 간 변환

Get 메서드를 속성으로 변환

내용: Get 메서드를 속성(및 선택적으로 Set 메서드)으로 변환할 수 있습니다.

언제: 로직이 없는 Get 메서드가 있는 경우.

방법

  1. Get 메서드 이름에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. (선택 사항) Set 메서드가 있는 경우 이 시점에 Set 메서드도 변환할 수 있습니다. <Get 메서드 또는 Set 메서드 이름>을 속성으로 바꾸기를 선택합니다.

Replace Get method with property example

속성을 Get 메서드로 변환

내용: 속성을 Get 메서드로 변환할 수 있습니다.

언제: 값을 즉시 설정하고 가져오는 것 이상의 작업을 포함하는 속성이 있는 경우.

방법

  1. Get 메서드 이름에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. <property name>을 메서드로 바꾸기를 선택합니다.

Replace property name with method example

if 및 switch 문 간 변환

내용: if 문을 switch 문 또는 C# 8.0 switch 식으로 변환합니다.

언제: if 문을 switch 문 또는 switch 식으로 변환하고 그 반대로도 변환하려는 경우.

이유: if 문을 사용하는 경우 이 리팩터링을 통해 switch 문 또는 switch 식으로 쉽게 전환할 수 있습니다.

방법

  1. if 키워드에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 다음 옵션 중에서 선택합니다.

switch 문으로 변환을 선택합니다.

Convert to  statement example

switch 식으로 변환을 선택합니다.

Convert to  expression example

if 문으로 변환을 선택합니다.

Convert to  statement example

일반 문자열 및 verbatim 문자열 간 변환

내용: 일반 문자열 및 verbatim 문자열 리터럴 간에 변환할 수 있습니다.

언제: 코드를 더 간결하게 만들거나 더 명확하게 제공하려는 경우.

이유: verbatim 문자열 리터럴을 일반 문자열 리터럴로 변환하면 공간을 절약하는 데 도움이 될 수 있습니다. 일반 문자열 리터럴을 verbatim 문자열 리터럴로 변환하면 더 명확하게 제공할 수 있습니다.

방법

  1. 일반 문자열 또는 verbatim 문자열 리터럴에 캐럿을 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 다음 옵션 중에서 선택합니다.

일반 문자열로 변환을 선택합니다.

verbatim 문자열로 변환을 선택합니다.

클래스를 레코드로 변환

내용: 클래스를 C# 레코드로 변환합니다.

언제: 데이터를 저장하고 불변성에 최적화된 레코드로 클래스를 빠르게 변경하려는 경우.

방법

  1. 클래스 이름에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 위치 기반 레코드로 변환을 선택합니다.

Convert class to record before example

Convert class to record after example

로컬 함수를 메서드로 변환

내용: 로컬 함수를 메서드로 변환합니다.

언제: 현재 로컬 컨텍스트 외부에서 정의하고 싶은 로컬 함수가 있는 경우.

이유: 로컬 함수를 메서드로 변환하여 로컬 컨텍스트 외부에서 호출할 수 있도록 하려는 경우. 로컬 함수가 너무 길어지면 메서드로 변환하는 것이 좋습니다. 별도의 메서드에 함수를 정의하면 코드를 더 쉽게 읽을 수 있습니다.

방법

  1. 로컬 함수에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 메서드로 변환을 선택합니다.

Convert local function to method example

숫자 리터럴을 16진수, 10진수 또는 2진수로 변환

내용: 숫자를 16진수, 2진수 또는 10진수로 변환합니다.

언제: 수동으로 변환을 계산할 필요 없이 원하는 기본값으로 숫자를 자동으로 변환하려는 경우 사용합니다.

방법

  1. 숫자 리터럴에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 다음 옵션 중 하나를 선택합니다.

10진수로 변환을 선택합니다.

Convert to decimal example

16진수로 변환을 선택합니다.

Convert to hex example

2진수로 변환을 선택합니다.

Convert to binary example

자리 표시자를 보간된 문자열로 변환

내용: String.Format 형식의 결과 문자열(또는 자리 표시자)을 보간된 문자열로 변환합니다.

언제: 보간된 문자열을 빠르게 만들고 싶을 때 사용합니다.

이유: 보간된 문자열은 String.Format의 더 읽기 쉬운 버전을 제공하고 변수 이름을 직접 액세스할 수 있습니다.

방법

  1. String.Format 자리 표시자에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 보간된 문자열로 변환을 선택합니다.

Convert placeholder to interpolated string example

일반 문자열을 보간된 문자열로 변환

내용: 일반 문자열을 보간된 문자열로 변경합니다.

언제: 코드를 정리하고 더 읽기 쉽게 만들고 싶을 때 사용합니다.

방법

  1. 변환하려는 문자열에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 보간된 문자열로 변환을 선택합니다.

Convert to interpolated string before example

Convert to interpolated string after example

튜플을 구조체로 변환

내용: 튜플을 struct로 변환합니다.

언제: 튜플을 struct로 빠르게 변경하고 여러 번 액세스하려는 고정 데이터가 있을 때 사용합니다.

방법

  1. 튜플에 커서를 놓습니다.

  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.

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

    • struct로 변환 -> 포함된 멤버에서 사용법 업데이트를 선택합니다.
    • struct로 변환 -> 포함된 형식에서 사용법 업데이트를 선택합니다.
    • struct로 변환 -> 포함된 프로젝트에서 사용법 업데이트를 선택합니다.
    • struct로 변환 -> 종속 프로젝트에서 사용법 업데이트를 선택합니다.

Convert tuple to  options

Convert tuple to  example

필드 캡슐화

내용: 필드를 속성으로 전환하고 해당 필드의 모든 사용을 새 속성을 사용하도록 업데이트할 수 있습니다.

언제: 필드를 속성으로 이동하고 해당 필드에 대한 모든 참조를 업데이트하려는 경우.

이유: 다른 클래스에 필드에 대한 액세스 권한을 부여하고 싶지만 해당 클래스에 직접 액세스 권한을 부여하고 싶지 않은 경우. 필드를 속성으로 래핑함으로써 예를 들어 할당되는 값을 확인하는 코드를 작성할 수 있습니다.

방법

  1. 캡슐화할 필드 이름 안에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 다음 중 하나를 선택합니다.

필드 캡슐화: <fieldname> (및 속성 사용)을 선택합니다.

Encapsulate field and use property example

필드 캡슐화: <fieldname> (그러나 필드 계속 사용)을 선택합니다.

Encapsulate field but still use field example

비교 연산자 생성

내용: IComparable을 구현하는 형식에 대한 비교 연산자를 생성할 수 있습니다.

언제: IComparable을 구현하는 형식이 있는 경우 비교 연산자를 자동으로 추가합니다.

이유: 값 형식을 구현하는 경우 Equals 메서드를 재정의하는 것을 고려해야 합니다. 그러면 ValueTypeEquals 메서드에 대한 기본 구현보다 성능이 향상됩니다.

방법

  1. 클래스 내부 또는 IComparable 키워드에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 드롭다운 메뉴에서 비교 연산자 생성을 선택합니다.

기본 생성자 생성

내용: 클래스에 대한 새 기본 생성자 코드 생성을 즉시 수행할 수 있습니다.

언제: 새 기본 생성자를 도입하고 자동으로 올바르게 선언하고 싶을 때.

이유: 사용하기 전에 생성자를 선언할 수 있지만 이 기능은 자동으로 생성합니다.

방법

  1. 클래스 이름에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 생성자 <classname>() 생성을 선택합니다.

Generate default constructor example

매개변수 생성

내용: 메서드 매개변수를 자동으로 생성합니다.

언제: 현재 컨텍스트에 존재하지 않는 변수를 메서드에서 참조하고 오류가 발생하는 경우, 매개변수를 코드 수정으로 생성할 수 있습니다.

이유: 컨텍스트를 잃지 않고 메서드 시그니처를 빠르게 수정할 수 있습니다.

방법

  1. 변수 이름에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 매개변수 생성을 선택합니다.

Generate parameter example

모든 멤버 명시적으로 구현

내용: 인터페이스의 메서드를 클래스에서 명시적으로 정의합니다. 명시적 인터페이스 구현은 지정된 인터페이스를 통해서만 호출되는 클래스 멤버입니다.

언제: 사용 시

  • 여러 인터페이스에 대해 동일한 구현이 호출되는 것을 원하지 않습니다.
  • 두 인터페이스가 동일한 이름(예: 속성 및 메서드)의 멤버를 각각 선언하는 경우를 해결하려고 합니다.

방법

  1. 클래스에서 구현 중인 인터페이스에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 모든 멤버 명시적으로 구현을 선택합니다.

Implement all members explicitly example

모든 멤버 암시적으로 구현

내용: 클래스에서 인터페이스의 메서드를 암시적으로 정의합니다. 암시적 인터페이스 구현은 인터페이스의 메서드 및 속성이 클래스에 공개 메서드로 직접 추가되는 경우입니다.

방법

  1. 클래스에서 구현 중인 인터페이스에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 인터페이스 구현을 선택합니다.

Implement all members implicitly

메서드 인라인

내용: 인라인 메서드 리팩터링.

언제: 원래 메서드 선언을 제거하는 옵션을 사용하여 단일 문 본문 내에서 정적, 인스턴스 및 확장 메서드의 사용을 바꾸고 싶을 때.

이유: 이 리팩터링은 더 명확한 구문을 제공합니다.

방법

  1. 메서드 사용에 캐럿을 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 다음 옵션 중에서 선택합니다.

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

Inline method example

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

Inline and keep method example

임시 변수 인라인

내용: 임시 변수를 제거하고 그 값으로 대체할 수 있습니다.

언제: 임시 변수 사용으로 인해 코드를 이해하기 어려울 때.

이유: 임시 변수를 제거하면 코드를 더 쉽게 읽을 수 있습니다.

방법

  1. 인라인할 임시 변수 안에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 임시 변수 인라인을 선택합니다.

Inline temporary variable example

식에 대한 로컬 변수 도입

내용: 기존 식을 대체할 로컬 변수를 즉시 생성할 수 있습니다.

언제: 로컬 변수에 있었다면 나중에 쉽게 재사용할 수 있는 코드가 있을 때.

이유: 코드를 여러 번 복사하여 붙여넣어 여러 위치에서 사용할 수 있지만, 작업을 한 번 수행하고 결과를 로컬 변수에 저장한 다음 로컬 변수를 전체적으로 사용하는 것이 좋습니다.

방법

  1. 새 로컬 변수에 할당하려는 식에 캐럿을 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 다음 옵션 중에서 선택합니다.

로컬 도입 -> <expression>에 대한 로컬 도입을 선택합니다.

Introduce local for expression example

로컬 도입 -> <expression>의 모든 발생에 대한 로컬 도입을 선택합니다.

매개변수 도입

내용: 기존 식을 대체할 새 매개변수를 즉시 생성할 수 있습니다.

언제: 매개변수에 있었다면 나중에 쉽게 재사용할 수 있는 코드가 있을 때.

이유: 코드를 여러 번 복사하여 붙여넣어 여러 위치에서 사용할 수 있지만, 작업을 한 번 수행하고 결과를 매개변수에 저장한 다음 매개변수를 전체적으로 사용하는 것이 좋습니다.

방법

  1. 새 매개변수에 할당하려는 식에 캐럿을 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 다음 옵션 중에서 선택합니다.

<expression>에 대한 매개변수 도입 -> 호출 사이트 직접 업데이트를 선택합니다.

Update call sites directly example

<expression>에 대한 매개변수 도입 -> 추출된 메서드로를 선택합니다.

Introduce parameter into extracted method example

<expression>에 대한 매개변수 도입 -> 새 오버로드로를 선택합니다.

Introduce parameter into new overload example

using 문 도입

내용: IDisposable 인스턴스에 using 문/코드 블록을 추가합니다.

언제: 올바르게 획득, 사용 및 폐기되었는지 확인하려는 IDisposable 인스턴스가 있을 때.

방법

  1. 새 매개변수에 할당하려는 식에 캐럿을 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. using 문 도입을 선택합니다.

Introduce  statement example

조건부 식 및 논리 연산 반전

내용: 조건부 식 또는 조건부 and \ or 연산자를 반전시킬 수 있습니다.

언제: 반전하면 더 잘 이해할 수 있는 조건부 식 또는 조건부 and \ or 연산자가 있을 때.

이유: 식 또는 조건부 and \ or 연산자를 수동으로 반전시키면 시간이 훨씬 오래 걸리고 오류가 발생할 수 있습니다. 이 코드 수정은 이 리팩터링을 자동으로 수행하는 데 도움이 됩니다.

방법

  1. 조건부 식 또는 조건부 and \ or 연산자에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 조건부 반전 또는 &&||로 바꾸기를 선택합니다.

Invert conditional example

Replace  with  example

if 반전

내용: 코드의 의미를 변경하지 않고 if 또는 if else 문을 반전시킬 수 있습니다.

언제: 반전하면 더 잘 이해할 수 있는 if 또는 if else 문이 있을 때.

이유: if 또는 if else 문을 수동으로 반전시키면 시간이 훨씬 오래 걸리고 오류가 발생할 수 있습니다. 이 코드 수정은 이 리팩터링을 자동으로 수행하는 데 도움이 됩니다.

방법

  1. if 또는 if else 문에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. if 반전을 선택합니다.

Invert  example

멤버를 static으로 만들기

내용: 멤버를 static으로 만듭니다.

언제: non-static 멤버를 static으로 만들고 싶을 때.

이유: static 멤버는 가독성을 향상시킵니다. 특정 코드가 격리되어 있음을 알면 이해, 재독 및 재사용이 더 쉬워집니다.

방법

  1. 멤버 이름에 캐럿을 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. static으로 만들기를 선택합니다.

Make member static example

선언을 참조 근처로 이동

내용: 변수 선언을 사용 위치에 더 가깝게 이동할 수 있습니다.

언제: 더 좁은 범위에 있을 수 있는 변수 선언이 있을 때.

이유: 그대로 둘 수도 있지만 가독성 문제나 정보 은폐를 유발할 수 있습니다. 이는 가독성을 개선하기 위한 리팩터링 기회입니다.

방법

  1. 변수 선언에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 선언을 참조 근처로 이동을 선택합니다.

Move declaration near reference example

형식을 일치하는 파일로 이동

내용: 선택한 형식을 동일한 이름을 가진 별도의 파일로 이동할 수 있습니다.

언제: 동일한 파일에 여러 개의 클래스, 구조체, 인터페이스 등이 있고 분리하고 싶을 때.

이유: 동일한 파일에 여러 유형을 배치하면 해당 유형을 찾는 것이 어려워질 수 있습니다. 유형을 동일한 이름의 파일로 이동하면 코드가 더 읽기 쉬워지고 탐색하기 쉬워집니다.

방법

  1. 정의된 형식 이름 안에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 형식을 <typename>.cs로 이동을 선택합니다.

Move type to matching file example

for 문 반전

내용: for 문을 반전시킬 수 있습니다.

언제: for 문의 의미와 반복 방식을 반전시키고 싶을 때 사용합니다.

이유: for 문을 수동으로 반전시키면 시간이 훨씬 오래 걸리고 오류가 발생할 수 있습니다. 이 코드 수정은 이 리팩터링을 자동으로 수행하는 데 도움이 됩니다.

방법

  1. for 문에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. for 문 반전을 선택합니다.

Reverse  statements example

if 문 분할 또는 병합

내용: if 문을 분할하거나 병합합니다.

언제: && 또는 || 연산자를 사용하는 if 문을 중첩된 if 문으로 분할하거나 if 문을 외부 if 문과 병합하려는 경우.

이유: 스타일 선호도의 문제입니다.

방법

if 문을 분할하려면

  1. if 문에서 && 또는 || 연산자 옆에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 중첩된 if 문으로 분할을 선택합니다.

Split into nested  statements example

내부 if 문을 외부 if 문과 병합하려면

  1. 내부 if 키워드에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 중첩된 if 문과 병합을 선택합니다.

Merge with nested  statements example

명시적 형식 사용

내용: 이 리팩터링을 사용하여 로컬 변수 선언에서 var를 명시적 형식으로 바꿉니다.

이유: 코드의 가독성을 향상시키거나 선언에서 변수를 초기화하고 싶지 않을 때.

그러나 var는 변수가 익명 형식으로 초기화되고 개체의 속성이 나중에 액세스되는 경우에 사용해야 합니다. 자세한 내용은 암시적으로 형식화된 로컬 변수(C#)를 참조하십시오.

방법

  1. var 키워드에 캐럿을 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. var 대신 명시적 형식 사용을 선택합니다.

Use explicit type instead of  example

암시적 형식 사용

내용: 이 리팩터링을 사용하여 로컬 변수 선언에서 명시적 형식을 var로 바꿉니다.

이유: 개인 코딩 규칙에 맞추고 표시되는 코드를 줄이려면. var는 변수가 익명 형식으로 초기화되고 개체의 속성이 나중에 액세스되는 경우에 사용해야 합니다. 자세한 내용은 암시적으로 형식화된 로컬 변수(C#)를 참조하십시오.

방법

  1. 명시적 형식 키워드에 캐럿을 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 암시적 형식 사용을 선택합니다.

Use implicit type example

람다 식 또는 블록 본문 사용

내용: 람다 식을 식 본문 또는 블록 본문으로 리팩터링할 수 있습니다.

언제: 람다 식이 식 본문 또는 블록 본문을 사용하도록 선호하는 경우.

이유: 람다 식은 사용자 환경 설정에 따라 가독성을 개선하도록 리팩터링할 수 있습니다.

방법

  1. 람다 연산자 오른쪽에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 다음 중 하나를 선택합니다.

람다 식에 대한 블록 본문 사용을 선택합니다.

Use block body for lambda expressions example

람다 식에 대한 식 본문 사용을 선택합니다.

Use expression body for lambda expressions

재귀 패턴 사용

내용: 코드 블록을 재귀 패턴을 사용하도록 변환합니다. 이 리팩터링은 switch 문, 속성 패턴 일치, 튜플 패턴 일치 및 위치 기반 패턴 일치와 함께 작동합니다.

언제: 재귀 패턴을 사용하면 코드를 더 읽기 쉽고 깔끔하게 만들 수 있습니다.

방법

  1. 재귀 패턴으로 변환하려는 식에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 다음 중 하나를 선택합니다.

switch 문을 식으로 변환을 선택합니다.

Convert  statement to expression example

재귀 패턴 사용을 선택합니다.

Use recursive patterns before example

Use recursive patterns after example

줄 바꿈, 들여쓰기 및 정렬 리팩터링

호출 체인 줄 바꿈 및 정렬

무엇: 메서드 호출 체인을 래핑하고 정렬할 수 있습니다.

언제: 한 문장에 여러 메서드 호출로 구성된 긴 체인이 있습니다.

왜: 긴 목록은 사용자 설정에 따라 래핑하거나 들여쓰면 더 쉽게 읽을 수 있습니다.

방법

  1. 호출 체인의 아무 곳에나 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 리팩토링을 적용하려면 호출 체인 래핑 또는 호출 체인 래핑 및 정렬을 선택합니다.

Wrap and align call chain example

매개변수 또는 인수 줄 바꿈, 들여쓰기 및 정렬

무엇: 매개 변수 또는 인수를 래핑, 들여쓰기 및 정렬할 수 있습니다.

언제: 여러 매개 변수 또는 인수를 가진 메서드 선언 또는 호출이 있습니다.

왜: 긴 매개 변수 또는 인수 목록은 사용자 설정에 따라 래핑하거나 들여쓰면 더 쉽게 읽을 수 있습니다.

방법

  1. 매개 변수 목록에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 다음 옵션 중에서 선택합니다.

모든 매개 변수 래핑 -> 래핑된 매개 변수 정렬을 선택합니다.

Align wrapped parameters example

모든 매개 변수 래핑 -> 모든 매개 변수 들여쓰기를 선택합니다.

Indent all parameters example

모든 매개 변수 래핑 -> 래핑된 매개 변수 들여쓰기를 선택합니다.

Indent wrapped parameters example

이진 식 줄 바꿈

무엇: 이항 표현식을 래핑할 수 있습니다.

언제: 이항 표현식이 있습니다.

왜: 이항 표현식은 사용자 설정에 따라 래핑하면 더 쉽게 읽을 수 있습니다.

방법

  1. 이항 표현식에 커서를 놓습니다.
  2. 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
  3. 리팩토링을 적용하려면 식 래핑을 선택합니다.

Wrap expression example

© . This site is unofficial and not affiliated with Microsoft.