C# 빠른 작업 및 리팩터링
Visual Studio Code는 소스 코드를 리팩터링하는 다양한 방법과 코딩 중에 코드를 생성하고 문제를 해결하는 빠른 수정을 제공합니다. 액세스하려면 나타나는 '전구' 아이콘을 클릭하거나 빠른 수정 명령 ⌘. (Windows, Linux Ctrl+.)을 사용하여 빠른 수정 및 리팩터링 옵션 목록을 표시합니다. 편집기를 마우스 오른쪽 버튼으로 클릭하고 리팩터링 ⌃⇧R (Windows, Linux Ctrl+Shift+R)을 선택하여 리팩터링 옵션만 표시할 수도 있습니다.
지원되는 리팩터링 및 빠른 수정
await추가- 멤버에서 생성자 매개변수 추가
DebuggerDisplay특성 추가- 명시적 캐스트 추가
- 파일 헤더 추가
- 누락된
usings/가져오기 추가 - 명명된 인수 추가
- 익명 형식을 클래스로 변환
- 자동 속성 및 전체 속성 간 변환
- 직접 캐스트 및
as식 간 변환 for루프 및foreach문 간 변환- Get 메서드 및 속성 간 변환
if및switch문 간 변환- 일반 문자열 및 verbatim 문자열 간 변환
- 클래스를 레코드로 변환
- 로컬 함수를 메서드로 변환
- 숫자 리터럴을 16진수, 10진수 또는 2진수로 변환
- 자리 표시자를 보간된 문자열로 변환
- 일반 문자열을 보간된 문자열로 변환
- 튜플을 구조체로 변환
- 필드 캡슐화
- 비교 연산자 생성
- 기본 생성자 생성
- 매개변수 생성
- 모든 멤버 명시적으로 구현
- 모든 멤버 암시적으로 구현
- 메서드 인라인
- 임시 변수 인라인
- 식에 대한 로컬 변수 도입
- 매개변수 도입
- using 문 도입
- 조건부 식 및 논리 연산 반전
if반전- 멤버를 static으로 만들기
- 선언을 참조 근처로 이동
- 형식을 일치하는 파일로 이동
for문 반전if문 분할 또는 병합- 명시적 형식 사용
- 암시적 형식 사용
- 람다 식 또는 블록 본문 사용
- 재귀 패턴 사용
- 줄 바꿈, 들여쓰기 및 정렬 리팩터링
await 추가
내용: 함수 호출에 await 키워드를 추가합니다.
언제: 비동기 메서드 내에서 함수를 호출할 때.
방법
- 함수 호출에 캐럿을 놓습니다(대부분 빨간색으로 밑줄이 그어져 있을 것입니다).
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- await 추가를 선택합니다.

멤버에서 생성자 매개변수 추가
내용: 선택한 클래스 멤버를 기반으로 매개변수가 있는 새 생성자를 생성합니다.
언제: 새 생성자를 도입하고 모든 올바른 매개변수로 자동으로 선언하고 싶을 때.
이유: 사용하기 전에 생성자를 선언할 수 있지만 이 기능은 자동으로 생성합니다.
방법
- 생성자에서 매개변수로 추가하려는 클래스 멤버를 강조 표시합니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 생성자
( 을 선택합니다., , ) 생성

DebuggerDisplay 특성 추가
내용: DebuggerDisplay 특성은 디버거 변수 창에서 개체, 속성 또는 필드가 표시되는 방식을 제어합니다.
언제: 속성을 고정하려는 경우 코드를 프로그래밍 방식으로.
이유: 속성을 고정하면 디버거 내에서 해당 속성을 개체의 속성 목록 맨 위로 올리는 방식으로 개체를 빠르게 검사할 수 있습니다.
방법
- 형식, 대리자, 속성 또는 필드에 커서를 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누르고 DebuggerDisplay 특성 추가를 선택합니다.
DebuggerDisplay특성이 기본ToString()을 반환하는 자동 메서드와 함께 추가됩니다.

명시적 캐스트 추가
내용: 사용량에 따라 식에 명시적 캐스트를 자동으로 추가할 수 있습니다.
언제: 식에 명시적 캐스트를 추가해야 하고 자동으로 올바르게 할당하고 싶을 때.
이유: 수동으로 식에 명시적 캐스트를 추가할 수 있지만 이 기능은 코드 컨텍스트에 따라 자동으로 추가합니다.
방법
- 오류에 캐럿을 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 명시적 캐스트 추가를 선택합니다.
파일 헤더 추가
내용: EditorConfig를 사용하여 기존 파일, 프로젝트 및 솔루션에 파일 헤더를 추가합니다.
언제: 파일, 프로젝트 및 솔루션에 파일 헤더를 쉽게 추가하려는 경우.
이유: 팀에서 저작권 목적으로 파일 헤더를 포함하도록 요구하는 경우.
방법
- 프로젝트나 솔루션에 EditorConfig가 없는 경우 추가합니다.
- EditorConfig 파일에 다음 규칙을 추가합니다:
file_header_template. - 규칙의 값을 적용하려는 헤더 텍스트와 같도록 설정합니다. 파일 이름을 나타내는 자리 표시자로
{fileName}을 사용할 수 있습니다. - 모든 C# 파일의 첫 번째 줄에 캐럿을 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 파일 헤더 추가를 선택합니다.
누락된 using/가져오기 추가
내용: 복사하여 붙여넣은 코드에 필요한 가져오기 또는 using 지시문을 즉시 추가할 수 있습니다.
언제: 프로젝트의 다른 부분이나 다른 소스에서 코드를 복사하여 새 코드에 붙여넣는 것이 일반적입니다. 이 빠른 작업은 복사하여 붙여넣은 코드에 대한 누락된 가져오기 지시문을 찾아 추가하도록 안내합니다. 이 코드 수정은 프로젝트 간의 참조를 추가할 수도 있습니다.
이유: 빠른 작업이 필요한 가져오기를 자동으로 추가하므로 코드가 필요한 using 지시문을 수동으로 복사할 필요가 없습니다.
방법
- 필요한 using 지시문을 포함하지 않고 파일을 새 파일로 복사하여 붙여넣습니다. 결과 오류에는 누락된 using 지시문을 추가하는 코드 수정이 동반됩니다.
- 빠른 작업 및 리팩터링 메뉴를 열려면 ⌘. (Windows, Linux Ctrl+.)을 선택합니다.
- 누락된 참조를 추가하려면 <your reference> 사용을 선택합니다.

명명된 인수 추가
내용: 함수 호출의 지정된 매개변수 값에 명명된 인수를 추가합니다.
언제: 매개변수가 많은 메서드가 있는 경우 명명된 인수를 추가하여 코드를 더 읽기 쉽게 만들 수 있습니다.
방법
- 함수 호출 내의 매개변수에 커서를 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 인수 이름 추가 <parameter name>을 선택합니다.

익명 형식을 클래스로 변환
내용: 익명 형식을 클래스로 변환합니다.
언제: 클래스에서 계속 빌드하고 싶은 익명 형식이 있는 경우.
이유: 익명 형식은 로컬에서만 사용하는 경우 유용합니다. 코드가 성장함에 따라 클래스로 승격하는 쉬운 방법이 있으면 좋습니다.
방법
- 익명(
var) 형식에 커서를 놓습니다. - 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 클래스로 변환을 선택합니다.

자동 속성 및 전체 속성 간 변환
내용: 자동 구현 속성과 전체 속성 간에 변환합니다.
언제: 속성 로직이 변경된 경우.
이유: 자동 구현 속성과 전체 속성 간에 수동으로 변환할 수 있지만 이 기능은 자동으로 작업을 수행합니다.
방법
- 속성 이름에 커서를 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 다음 두 가지 옵션 중 하나를 선택합니다.
전체 속성으로 변환을 선택합니다.

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

직접 캐스트 및 'as' 식 간 변환
내용: 변수를 일반 캐스트와 as 키워드를 사용한 try 캐스트 간에 변환합니다.
언제: 캐스트가 특정 시나리오(as)에서 실패할 것으로 예상하거나 캐스트가 실패할 것으로 전혀 예상하지 않는 경우(직접 캐스트).
방법
- 변수에 커서를 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 다음 두 가지 옵션 중 하나를 선택합니다.
캐스트로 변경을 선택합니다.

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

for 루프 및 foreach 문 간 변환
내용: 코드에 for 루프가 있는 경우 이 리팩터링을 사용하여 foreach 문으로 변환할 수 있습니다.
이유: for 루프를 foreach 문으로 변환하려는 이유는 다음과 같습니다.
- 루프 내의 로컬 루프 변수를 인덱스로 사용하여 항목에 액세스하는 것 외에는 사용하지 않습니다.
- 코드를 단순화하고 초기화, 조건 및 반복기 섹션의 논리 오류 가능성을 줄이고 싶습니다.
foreach 문을 for 루프로 변환하려는 이유는 다음과 같습니다.
- 루프 내에서 로컬 루프 변수를 항목 액세스 이상의 용도로 사용하려고 합니다.
- 다차원 배열을 반복하고 배열 요소에 대해 더 많은 제어를 원합니다.
방법
foreach또는for키워드에 캐럿을 놓습니다.- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 다음 두 가지 옵션 중 하나를 선택합니다.
for로 변환을 선택합니다.

foreach로 변환을 선택합니다.

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

속성을 Get 메서드로 변환
내용: 속성을 Get 메서드로 변환할 수 있습니다.
언제: 값을 즉시 설정하고 가져오는 것 이상의 작업을 포함하는 속성이 있는 경우.
방법
- Get 메서드 이름에 커서를 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- <property name>을 메서드로 바꾸기를 선택합니다.

if 및 switch 문 간 변환
내용: if 문을 switch 문 또는 C# 8.0 switch 식으로 변환합니다.
언제: if 문을 switch 문 또는 switch 식으로 변환하고 그 반대로도 변환하려는 경우.
이유: if 문을 사용하는 경우 이 리팩터링을 통해 switch 문 또는 switch 식으로 쉽게 전환할 수 있습니다.
방법
if키워드에 커서를 놓습니다.- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 다음 옵션 중에서 선택합니다.
switch 문으로 변환을 선택합니다.

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

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

일반 문자열 및 verbatim 문자열 간 변환
내용: 일반 문자열 및 verbatim 문자열 리터럴 간에 변환할 수 있습니다.
언제: 코드를 더 간결하게 만들거나 더 명확하게 제공하려는 경우.
이유: verbatim 문자열 리터럴을 일반 문자열 리터럴로 변환하면 공간을 절약하는 데 도움이 될 수 있습니다. 일반 문자열 리터럴을 verbatim 문자열 리터럴로 변환하면 더 명확하게 제공할 수 있습니다.
방법
- 일반 문자열 또는 verbatim 문자열 리터럴에 캐럿을 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 다음 옵션 중에서 선택합니다.
일반 문자열로 변환을 선택합니다.
verbatim 문자열로 변환을 선택합니다.
클래스를 레코드로 변환
내용: 클래스를 C# 레코드로 변환합니다.
언제: 데이터를 저장하고 불변성에 최적화된 레코드로 클래스를 빠르게 변경하려는 경우.
방법
- 클래스 이름에 커서를 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 위치 기반 레코드로 변환을 선택합니다.


로컬 함수를 메서드로 변환
내용: 로컬 함수를 메서드로 변환합니다.
언제: 현재 로컬 컨텍스트 외부에서 정의하고 싶은 로컬 함수가 있는 경우.
이유: 로컬 함수를 메서드로 변환하여 로컬 컨텍스트 외부에서 호출할 수 있도록 하려는 경우. 로컬 함수가 너무 길어지면 메서드로 변환하는 것이 좋습니다. 별도의 메서드에 함수를 정의하면 코드를 더 쉽게 읽을 수 있습니다.
방법
- 로컬 함수에 커서를 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 메서드로 변환을 선택합니다.

숫자 리터럴을 16진수, 10진수 또는 2진수로 변환
내용: 숫자를 16진수, 2진수 또는 10진수로 변환합니다.
언제: 수동으로 변환을 계산할 필요 없이 원하는 기본값으로 숫자를 자동으로 변환하려는 경우 사용합니다.
방법
- 숫자 리터럴에 커서를 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 다음 옵션 중 하나를 선택합니다.
10진수로 변환을 선택합니다.

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

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

자리 표시자를 보간된 문자열로 변환
내용: String.Format 형식의 결과 문자열(또는 자리 표시자)을 보간된 문자열로 변환합니다.
언제: 보간된 문자열을 빠르게 만들고 싶을 때 사용합니다.
이유: 보간된 문자열은 String.Format의 더 읽기 쉬운 버전을 제공하고 변수 이름을 직접 액세스할 수 있습니다.
방법
String.Format자리 표시자에 커서를 놓습니다.- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 보간된 문자열로 변환을 선택합니다.

일반 문자열을 보간된 문자열로 변환
내용: 일반 문자열을 보간된 문자열로 변경합니다.
언제: 코드를 정리하고 더 읽기 쉽게 만들고 싶을 때 사용합니다.
방법
- 변환하려는 문자열에 커서를 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 보간된 문자열로 변환을 선택합니다.


튜플을 구조체로 변환
내용: 튜플을 struct로 변환합니다.
언제: 튜플을 struct로 빠르게 변경하고 여러 번 액세스하려는 고정 데이터가 있을 때 사용합니다.
방법
-
튜플에 커서를 놓습니다.
-
빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
-
다음 옵션 중 하나를 선택합니다.
- struct로 변환 -> 포함된 멤버에서 사용법 업데이트를 선택합니다.
- struct로 변환 -> 포함된 형식에서 사용법 업데이트를 선택합니다.
- struct로 변환 -> 포함된 프로젝트에서 사용법 업데이트를 선택합니다.
- struct로 변환 -> 종속 프로젝트에서 사용법 업데이트를 선택합니다.


필드 캡슐화
내용: 필드를 속성으로 전환하고 해당 필드의 모든 사용을 새 속성을 사용하도록 업데이트할 수 있습니다.
언제: 필드를 속성으로 이동하고 해당 필드에 대한 모든 참조를 업데이트하려는 경우.
이유: 다른 클래스에 필드에 대한 액세스 권한을 부여하고 싶지만 해당 클래스에 직접 액세스 권한을 부여하고 싶지 않은 경우. 필드를 속성으로 래핑함으로써 예를 들어 할당되는 값을 확인하는 코드를 작성할 수 있습니다.
방법
- 캡슐화할 필드 이름 안에 커서를 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 다음 중 하나를 선택합니다.
필드 캡슐화: <fieldname> (및 속성 사용)을 선택합니다.

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

비교 연산자 생성
내용: IComparable을 구현하는 형식에 대한 비교 연산자를 생성할 수 있습니다.
언제: IComparable을 구현하는 형식이 있는 경우 비교 연산자를 자동으로 추가합니다.
이유: 값 형식을 구현하는 경우 Equals 메서드를 재정의하는 것을 고려해야 합니다. 그러면 ValueType의 Equals 메서드에 대한 기본 구현보다 성능이 향상됩니다.
방법
- 클래스 내부 또는 IComparable 키워드에 커서를 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 드롭다운 메뉴에서 비교 연산자 생성을 선택합니다.
기본 생성자 생성
내용: 클래스에 대한 새 기본 생성자 코드 생성을 즉시 수행할 수 있습니다.
언제: 새 기본 생성자를 도입하고 자동으로 올바르게 선언하고 싶을 때.
이유: 사용하기 전에 생성자를 선언할 수 있지만 이 기능은 자동으로 생성합니다.
방법
- 클래스 이름에 커서를 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 생성자 <classname>() 생성을 선택합니다.

매개변수 생성
내용: 메서드 매개변수를 자동으로 생성합니다.
언제: 현재 컨텍스트에 존재하지 않는 변수를 메서드에서 참조하고 오류가 발생하는 경우, 매개변수를 코드 수정으로 생성할 수 있습니다.
이유: 컨텍스트를 잃지 않고 메서드 시그니처를 빠르게 수정할 수 있습니다.
방법
- 변수 이름에 커서를 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 매개변수 생성을 선택합니다.

모든 멤버 명시적으로 구현
내용: 인터페이스의 메서드를 클래스에서 명시적으로 정의합니다. 명시적 인터페이스 구현은 지정된 인터페이스를 통해서만 호출되는 클래스 멤버입니다.
언제: 사용 시
- 여러 인터페이스에 대해 동일한 구현이 호출되는 것을 원하지 않습니다.
- 두 인터페이스가 동일한 이름(예: 속성 및 메서드)의 멤버를 각각 선언하는 경우를 해결하려고 합니다.
방법
- 클래스에서 구현 중인 인터페이스에 커서를 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 모든 멤버 명시적으로 구현을 선택합니다.

모든 멤버 암시적으로 구현
내용: 클래스에서 인터페이스의 메서드를 암시적으로 정의합니다. 암시적 인터페이스 구현은 인터페이스의 메서드 및 속성이 클래스에 공개 메서드로 직접 추가되는 경우입니다.
방법
- 클래스에서 구현 중인 인터페이스에 커서를 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 인터페이스 구현을 선택합니다.

메서드 인라인
내용: 인라인 메서드 리팩터링.
언제: 원래 메서드 선언을 제거하는 옵션을 사용하여 단일 문 본문 내에서 정적, 인스턴스 및 확장 메서드의 사용을 바꾸고 싶을 때.
이유: 이 리팩터링은 더 명확한 구문을 제공합니다.
방법
- 메서드 사용에 캐럿을 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 다음 옵션 중에서 선택합니다.
인라인 메서드 선언을 제거하려면 <QualifiedMethodName> 인라인을 선택합니다.

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

임시 변수 인라인
내용: 임시 변수를 제거하고 그 값으로 대체할 수 있습니다.
언제: 임시 변수 사용으로 인해 코드를 이해하기 어려울 때.
이유: 임시 변수를 제거하면 코드를 더 쉽게 읽을 수 있습니다.
방법
- 인라인할 임시 변수 안에 커서를 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 임시 변수 인라인을 선택합니다.

식에 대한 로컬 변수 도입
내용: 기존 식을 대체할 로컬 변수를 즉시 생성할 수 있습니다.
언제: 로컬 변수에 있었다면 나중에 쉽게 재사용할 수 있는 코드가 있을 때.
이유: 코드를 여러 번 복사하여 붙여넣어 여러 위치에서 사용할 수 있지만, 작업을 한 번 수행하고 결과를 로컬 변수에 저장한 다음 로컬 변수를 전체적으로 사용하는 것이 좋습니다.
방법
- 새 로컬 변수에 할당하려는 식에 캐럿을 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 다음 옵션 중에서 선택합니다.
로컬 도입 -> <expression>에 대한 로컬 도입을 선택합니다.

로컬 도입 -> <expression>의 모든 발생에 대한 로컬 도입을 선택합니다.
매개변수 도입
내용: 기존 식을 대체할 새 매개변수를 즉시 생성할 수 있습니다.
언제: 매개변수에 있었다면 나중에 쉽게 재사용할 수 있는 코드가 있을 때.
이유: 코드를 여러 번 복사하여 붙여넣어 여러 위치에서 사용할 수 있지만, 작업을 한 번 수행하고 결과를 매개변수에 저장한 다음 매개변수를 전체적으로 사용하는 것이 좋습니다.
방법
- 새 매개변수에 할당하려는 식에 캐럿을 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 다음 옵션 중에서 선택합니다.
<expression>에 대한 매개변수 도입 -> 호출 사이트 직접 업데이트를 선택합니다.

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

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

using 문 도입
내용: IDisposable 인스턴스에 using 문/코드 블록을 추가합니다.
언제: 올바르게 획득, 사용 및 폐기되었는지 확인하려는 IDisposable 인스턴스가 있을 때.
방법
- 새 매개변수에 할당하려는 식에 캐럿을 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- using 문 도입을 선택합니다.

조건부 식 및 논리 연산 반전
내용: 조건부 식 또는 조건부 and \ or 연산자를 반전시킬 수 있습니다.
언제: 반전하면 더 잘 이해할 수 있는 조건부 식 또는 조건부 and \ or 연산자가 있을 때.
이유: 식 또는 조건부 and \ or 연산자를 수동으로 반전시키면 시간이 훨씬 오래 걸리고 오류가 발생할 수 있습니다. 이 코드 수정은 이 리팩터링을 자동으로 수행하는 데 도움이 됩니다.
방법
- 조건부 식 또는 조건부
and\or연산자에 커서를 놓습니다. - 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 조건부 반전 또는
&&을||로 바꾸기를 선택합니다.


if 반전
내용: 코드의 의미를 변경하지 않고 if 또는 if else 문을 반전시킬 수 있습니다.
언제: 반전하면 더 잘 이해할 수 있는 if 또는 if else 문이 있을 때.
이유: if 또는 if else 문을 수동으로 반전시키면 시간이 훨씬 오래 걸리고 오류가 발생할 수 있습니다. 이 코드 수정은 이 리팩터링을 자동으로 수행하는 데 도움이 됩니다.
방법
if또는if else문에 커서를 놓습니다.- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- if 반전을 선택합니다.

멤버를 static으로 만들기
내용: 멤버를 static으로 만듭니다.
언제: non-static 멤버를 static으로 만들고 싶을 때.
이유: static 멤버는 가독성을 향상시킵니다. 특정 코드가 격리되어 있음을 알면 이해, 재독 및 재사용이 더 쉬워집니다.
방법
- 멤버 이름에 캐럿을 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- static으로 만들기를 선택합니다.

선언을 참조 근처로 이동
내용: 변수 선언을 사용 위치에 더 가깝게 이동할 수 있습니다.
언제: 더 좁은 범위에 있을 수 있는 변수 선언이 있을 때.
이유: 그대로 둘 수도 있지만 가독성 문제나 정보 은폐를 유발할 수 있습니다. 이는 가독성을 개선하기 위한 리팩터링 기회입니다.
방법
- 변수 선언에 커서를 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 선언을 참조 근처로 이동을 선택합니다.

형식을 일치하는 파일로 이동
내용: 선택한 형식을 동일한 이름을 가진 별도의 파일로 이동할 수 있습니다.
언제: 동일한 파일에 여러 개의 클래스, 구조체, 인터페이스 등이 있고 분리하고 싶을 때.
이유: 동일한 파일에 여러 유형을 배치하면 해당 유형을 찾는 것이 어려워질 수 있습니다. 유형을 동일한 이름의 파일로 이동하면 코드가 더 읽기 쉬워지고 탐색하기 쉬워집니다.
방법
- 정의된 형식 이름 안에 커서를 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 형식을 <typename>.cs로 이동을 선택합니다.

for 문 반전
내용: for 문을 반전시킬 수 있습니다.
언제: for 문의 의미와 반복 방식을 반전시키고 싶을 때 사용합니다.
이유: for 문을 수동으로 반전시키면 시간이 훨씬 오래 걸리고 오류가 발생할 수 있습니다. 이 코드 수정은 이 리팩터링을 자동으로 수행하는 데 도움이 됩니다.
방법
for문에 커서를 놓습니다.- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- for 문 반전을 선택합니다.

if 문 분할 또는 병합
내용: if 문을 분할하거나 병합합니다.
언제: && 또는 || 연산자를 사용하는 if 문을 중첩된 if 문으로 분할하거나 if 문을 외부 if 문과 병합하려는 경우.
이유: 스타일 선호도의 문제입니다.
방법
if 문을 분할하려면
if문에서&&또는||연산자 옆에 커서를 놓습니다.- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 중첩된 if 문으로 분할을 선택합니다.

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

명시적 형식 사용
내용: 이 리팩터링을 사용하여 로컬 변수 선언에서 var를 명시적 형식으로 바꿉니다.
이유: 코드의 가독성을 향상시키거나 선언에서 변수를 초기화하고 싶지 않을 때.
그러나 var는 변수가 익명 형식으로 초기화되고 개체의 속성이 나중에 액세스되는 경우에 사용해야 합니다. 자세한 내용은 암시적으로 형식화된 로컬 변수(C#)를 참조하십시오.
방법
var키워드에 캐럿을 놓습니다.- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
var대신 명시적 형식 사용을 선택합니다.

암시적 형식 사용
내용: 이 리팩터링을 사용하여 로컬 변수 선언에서 명시적 형식을 var로 바꿉니다.
이유: 개인 코딩 규칙에 맞추고 표시되는 코드를 줄이려면. var는 변수가 익명 형식으로 초기화되고 개체의 속성이 나중에 액세스되는 경우에 사용해야 합니다. 자세한 내용은 암시적으로 형식화된 로컬 변수(C#)를 참조하십시오.
방법
- 명시적 형식 키워드에 캐럿을 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 암시적 형식 사용을 선택합니다.

람다 식 또는 블록 본문 사용
내용: 람다 식을 식 본문 또는 블록 본문으로 리팩터링할 수 있습니다.
언제: 람다 식이 식 본문 또는 블록 본문을 사용하도록 선호하는 경우.
이유: 람다 식은 사용자 환경 설정에 따라 가독성을 개선하도록 리팩터링할 수 있습니다.
방법
- 람다 연산자 오른쪽에 커서를 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 다음 중 하나를 선택합니다.
람다 식에 대한 블록 본문 사용을 선택합니다.

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

재귀 패턴 사용
내용: 코드 블록을 재귀 패턴을 사용하도록 변환합니다. 이 리팩터링은 switch 문, 속성 패턴 일치, 튜플 패턴 일치 및 위치 기반 패턴 일치와 함께 작동합니다.
언제: 재귀 패턴을 사용하면 코드를 더 읽기 쉽고 깔끔하게 만들 수 있습니다.
방법
- 재귀 패턴으로 변환하려는 식에 커서를 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 다음 중 하나를 선택합니다.
switch 문을 식으로 변환을 선택합니다.

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


줄 바꿈, 들여쓰기 및 정렬 리팩터링
호출 체인 줄 바꿈 및 정렬
무엇: 메서드 호출 체인을 래핑하고 정렬할 수 있습니다.
언제: 한 문장에 여러 메서드 호출로 구성된 긴 체인이 있습니다.
왜: 긴 목록은 사용자 설정에 따라 래핑하거나 들여쓰면 더 쉽게 읽을 수 있습니다.
방법
- 호출 체인의 아무 곳에나 커서를 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 리팩토링을 적용하려면 호출 체인 래핑 또는 호출 체인 래핑 및 정렬을 선택합니다.

매개변수 또는 인수 줄 바꿈, 들여쓰기 및 정렬
무엇: 매개 변수 또는 인수를 래핑, 들여쓰기 및 정렬할 수 있습니다.
언제: 여러 매개 변수 또는 인수를 가진 메서드 선언 또는 호출이 있습니다.
왜: 긴 매개 변수 또는 인수 목록은 사용자 설정에 따라 래핑하거나 들여쓰면 더 쉽게 읽을 수 있습니다.
방법
- 매개 변수 목록에 커서를 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 다음 옵션 중에서 선택합니다.
모든 매개 변수 래핑 -> 래핑된 매개 변수 정렬을 선택합니다.

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

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

이진 식 줄 바꿈
무엇: 이항 표현식을 래핑할 수 있습니다.
언제: 이항 표현식이 있습니다.
왜: 이항 표현식은 사용자 설정에 따라 래핑하면 더 쉽게 읽을 수 있습니다.
방법
- 이항 표현식에 커서를 놓습니다.
- 빠른 작업 및 리팩터링 메뉴를 트리거하려면 ⌘. (Windows, Linux Ctrl+.)을 누릅니다.
- 리팩토링을 적용하려면 식 래핑을 선택합니다.
