WholeTomato

리팩토링을 손쉽게

코드의 복잡도를 낮추고, 가독성을 높이세요. 기능을 손대지 않으면서도, 확장성을 확보할 수 있습니다. 오래된 코드, 물려받은 코드, 직접 만든 초기 버전 코드를 리팩토링 하세요.

리팩토링 명령에 접근하기

메뉴에 있는 리팩토링 명령은 키보드와 마우스로 접근할 수 있습니다. 메뉴의 내용은 컨텍스트에 따라 변합니다. 리팩토링은 비주얼 어시스트의 도구 창, 텍스트 편집기의 심볼, 선택, 공백에서 접근할 수 있습니다.

현재 문맥에 맞게 심볼을 인지하는 퀵 액션과 리팩토링 메뉴를 여세요. 기본 단축키는 Shift+Alt+Q입니다.

context aware refactoring menu

텍스트 편집기의 컨텍스트 메뉴에 리팩토링 명령 전체가 나타납니다.

Obtain a complete list of refactoring commands in the context menu

심볼 위에 마우스를 올리세요. 리펙토링이 가능한 상황이라면 비주얼 어시스트 아이콘이 표시됩니다. 이 아이콘을 클릭하면 문맥을 인지하는 메뉴가 열립니다.

Hover over a symbol and Visual Assist displays an icon when refactoring is available


시그너처 변경

메소드의 시그너처 변경을 참조, 구현, 선언 중 어디에서도 할 수 있습니다.

메소드나 함수의 시그너처를 간단한 대화상자 안에서 변경하세요. 비주얼 어시스트는 원문과 새 시스너처 간의 차이를 판단합니다. 이 강력한 리팩토링을 통해 파라미터를 재정렬, 이름 바꾸기, 추가, 삭제하세요. 참조하는 모든 곳이 한번에 변경됩니다. 파라미터의 이름을 변경하면 그 메소드 안의 해당 이름까지도 모두 변경됩니다.

아래의 시그너처 모두 변경할 수 있습니다:

  • 메소드 이름
  • 반환 타입
  • 가시성(Visibility)
  • 파라미터 이름
  • 파라미터 타입
  • 파라미터 순서
  • 파라미터 갯수
  • 한정자 (Qualifiers)

Change Signature 리팩토링은 Rename 리팩토링과 마찬가지로, 변경 범위를 설정하고 리팩토링될 대상들을 미리볼 수 있습니다.

x


포인터와 인스턴스를 서로 바꾸기

오브젝트 포인터를 오브젝트 참조로 또는 그 반대로 서로 바꾸세요.

선언문에서 타입 바꾸기를 빠르게 하세요. 참조에서 "." 과 "->"를 서로 바꾸고 해당되는 "*"과 "&"를 맞추세요. Convert... 리팩토링을 사용하면 됩니다.

Change object reference to object pointer


필드 캡슐화

필드 접근자를 생성하세요. 필드를 캡슐화하면 됩니다.

Encapsulate Field 리팩토링으로 멤버 필드에 대한 행위에 제약을 주세요. 알맞은 이름이 붙은 접근자가 자동으로 생깁니다. 원본 필드는 그대로 유지되므로 참조를 수정해도 기존 코드가 컴파일되는데 지장이 없습니다. 새 필드를 캡슐화하는 경우라면, 해당 필드가 즉시 private으로 지정되고 이후에는 엄격하게 접근이 제한됩니다.

Create accessors to a member field by encapsulating the field

C/C++이라면, 접근자 메소드는 헤더 파일 안의 해당 선언문 근처에 생성되며, 인라인 실행을 위해 헤더 파일에 계속 남아있습니다.

In C/C++, accessor methods are created adjacent to a declaration in a header file

만약 소스 파일 안에 구현하고 싶으면, 구현부를 대응되는 소스 파일로 옮기는 또다른 리팩토링 명령과 함께 Encapsulate Field를 사용하세요.

Move the implementations to a corresponding source file


메소드 추출

코드 일부를 별도의 메소드로 옮기세요. 기존 코드는 추출된 새 메소드를 호출하도록 바뀝니다.

긴 메소드를 더 읽기 쉽게 바꿔서 공통 코드 영역에 두고 공유하세요. Extract Method 리팩토링을 사용하면 됩니다. 여러 줄 또는 한 줄의 일부분을 뽑아내세요. 추출된 메소드에는 필요한 반환 값과 파라미터가 함께 생성됩니다.

Move a segment of code into a separate method, and replace the segment with a call to the extracted method

C/C++이라면, Extract Method 리팩토링은 헤더 파일 안에 인라인 메소드를 생성하거나 구현부를 추출하여 소스에 직접 넣습니다.

In C/C++, the refactoring creates an inline method in a header file


변수 도입

표현식을 변수로 바꿔서 코드의 목적을 설명하세요.

Introduce Variable 리팩토링은 선택 영역의 가장 안쪽 범위에 있는 임시 변수를 정의하고, 이 임시 변수를 변경된 코드를 사용하여 초기합니다. 그리고 나서 이 임시 변수를 사용하는 모든 구문을 알맞게 변경합니다.

Replace an expression with a variable that explains the purpose of the replaced code.


C/C++이라면, 메소드의 구현부를 소스 파일에서 헤더 파일 또는 클래스 선언부로 쉽게 옮기세요.

TMove Implementation to Header File 리팩토링은 인라인 실행이 되도록 구현부를 헤더 파일 안에 놓습니다. 또한 메소드 구현부를 클래스 선언부로 옮길 수도 있습니다. 이때 같은 클래스에 있는 여러 메소드들 근처로 옮깁니다. VA스니펫에서 구현부의 형식을 지정하세요.

Move Implementation to Header File


구현을 소스 파일로 옮기기

C/C++이라면, 메소드의 구현부를 헤더 파일에서 소스 파일로 쉽게 옮기세요.

(Encapsulate Field 처럼) 인라인 실행을 위해 구현부를 헤더 파일에 놓는 리팩토링이 진행되고 나면, Move Implementation to Source File 리팩토링이 종종 진행됩니다. 이 리팩토링은 헤더에 선언문를 생성하고 해당 구현부를 같은 클래스에 있는 여러 메소드들 근처로 옮깁니다.

Move Implementation to Source File


메소드 구현을 소스 파일로 옮기기

C/C++이라면, 구현부 전체를 헤더 파일에서 소스 파일로 한번에 옮기세요.

단일 구현부를 옮기는 리팩토링 명령을 확장하면, 모든 메소드를 헤더 파일에서 클래스 하나로 옮길 수 있습니다. (클래스 멤버 가 아니라) 클래스 이름에서 이 명령을 부르세요. 대화상자가 나타나면, 옮기고 싶은 구현부를 선택하세요.

Move Method Implementations to Source File


선택 영역을 새 파일로 옮기기

코드를 새 헤더 파일이나 새 소스 파일로 옮기고 생성된 파일을 작업 중인 프로젝트에 자동으로 추가하세요.

Move Selection to New File 리팩토링은 작업 중인 문서가 있는 폴더 안에 새 파일을 생성합니다. 새 파일의 형식은 VA스니펫에서 지정하세요. C/C++이라면, 선택 영역이 헤더 파일로 옮겨지고, 원문에는#include가 생깁니다.

Move code to a new header file or source file


이름 바꾸기

심볼의 이름 바꾸기를 빠르고 정확하게 하세요. 현재 프로젝트와 전체 솔루션에 적용됩니다.

Rename은 자주 사용되는 리팩토링입니다. 심볼의 정의, 구현, 모든 참조에서 이름을 바꿉니다. 주석과 문자열에 있는 이름까지 같이 바꾸는 옵션도 제공됩니다. 이름이 바뀔 모든 대상이 미리보기에 표시되므로 의도한 변경인지를 확신할 수 있습니다. 원하지 않는 항목은 선택 해제하세요. 실수였다면 전체 작업을 되돌리기 하세요.

이름 바꾸기가 적용되는 항목:

  • 클래스 (Class)
  • 이넘 (Enum)
  • 필드 (Field)
  • 매크로 (Macro)
  • 메소드 (Method)
  • 메소드 파라미터 (Method Parameter)
  • 변수 (Variable)

리팩토링 메뉴에서 Rename을 선택하세요. 새 이름을 지정하고 옵션을 지정하세요. 변경 미리보기에는 읽기전용과 쓰기가능 항목이 구분되어 표시됩니다.

Select Rename from any of the refactoring menus


파일 이름 바꾸기

작업 중인 문서의 이름을 바꿔도 빌드가 깨지지 않습니다.

작업 중인 문서의 이름과 대응되는 파일들의 이름 바꾸기를 더 쉽게 하세요. 작업 흐름에 방해되지 않으면서도 빌드가 깨지지 않습니다. 비주얼 어시스트는 자동으로 파일, 프로젝트, 솔루션을 업데이트 한 후에 마이크로소프트 비주얼 스튜디오에 연결된 소스 콘트롤 시스템에 변경된 이름을 반영합니다.

C/C++이라면, 헤더 파일과 소스 파일의 이름이 함께 변경됩니다. 그리고 헤더 파일 이름 변경은 해당 헤더 파일을 #include 하는 모든 지시자를 자동으로 업데이트 합니다. C#이라면, 디자인 파일과 코드 비하인드 파일 이름이 동시에 변경됩니다.

Rename your active document without breaking the build


인스턴스 선언을 단순화하세요

오브젝트 선언을 더 이해하기 쉽도록 만드세요.

해당 타입의 새 인스턴스를 지정하는 오브젝트의 외부 설정 코드를 제거하세요.

Simplify an instance declaration

Simplify Instance Declaration 리팩토링을 부르면, 효과는 같지만 더 간단한 선언이 생성되고 초기화됩니다.

Simplified instance declaration