Visual Studio에서 Python 코드 리팩터링

기존 코드를 다시 사용하고 코드를 새로 고치는 작업은 개발자에게 일반적인 작업입니다. 다른 용도로 기존 코드를 리팩터링하고 모든 새 코드를 작성하지 않음으로써 시간을 절약할 수 있습니다. 코드를 클린 사용하지 않는 항목을 제거하거나 가져오기 및 메서드를 새로 고쳐 최신 버전과 함께 사용할 수 있도록 할 수 있습니다.

Visual Studio는 Python 소스 코드를 자동으로 변환하고 클린 데 도움이 되는 몇 가지 명령을 제공합니다.

필수 조건

  • Visual Studio. 제품을 설치하려면 Visual Studio 설치의 단계를 따릅니다.
  • 기존 코드를 사용하여 Python 코드 프로젝트에 액세스합니다.

클래스, 메서드 또는 변수 이름 바꾸기

Rename 명령을 사용하여 클래스, 메서드 또는 변수를 포함하여 특정 식별자의 이름을 변경할 수 있습니다. Visual Studio는 식별자의 모든 인스턴스 또는 사용자가 나타내는 특정 인스턴스만 업데이트하도록 지원합니다.

다음 단계에서는 코드에서 이름 바꾸기 명령을 사용하는 방법을 보여 줍니다.

  1. 코드에서 이름을 바꿀 식별자를 마우스 오른쪽 단추로 클릭하고 이름 바꾸기를 선택합니다. 식별자에 캐럿을 배치하고 메뉴에서 리팩터>이름 바꾸기 편집>을 선택하거나 바로 가기 키인 F2를 사용할 수도 있습니다.

  2. 이름 바꾸기 대화 상자에서 식별자의 새 이름을 입력하고 확인을 선택합니다.

    Screenshot that shows how to specify a different name for an identifier in Visual Studio 2019.

  3. 다음 대화 상자에서 코드에서 새 이름을 사용해야 하는 파일 및 인스턴스를 선택합니다. 개별 인스턴스를 선택하여 특정 변경 사항을 미리 볼 수 있습니다.

    Screenshot that shows how to apply the new name to specific instances of an identifier and preview the changes in Visual Studio 2019.

  4. 적용을 선택하여 원본 코드 파일을 변경합니다.

  1. 코드에서 이름을 바꿀 식별자를 마우스 오른쪽 단추로 클릭하고 이름 바꾸기를 선택합니다. 식별자에 캐럿을 배치하고 메뉴에서 리팩터>이름 바꾸기 편집>을 선택하거나 바로 가기 키 Ctrl+R을 사용할 수도 있습니다.

  2. 이름 바꾸기 대화 상자에서 식별자에 대한 새 이름을 입력하고 Enter 키를 누릅니다.

    Screenshot that shows how to specify a different name for an identifier in Visual Studio 2022.

import 문 추가

코드에 정의가 없거나 형식 정보를 지원하는 식별자가 있는 경우 Visual Studio에서 문제를 해결하는 데 도움이 될 수 있습니다. 정보가 없는 식별자에 캐리트를 배치하면 Visual Studio는 코드 왼쪽에 스마트 태그(전구)를 표시합니다. 태그에는 해당 식별자에 필요한 import 명령이나 from ... import 문을 추가하는 명령이 나열됩니다.

다음 단계에서는 스마트 태그를 사용하여 코드에 가져오기를 추가하는 방법을 보여 줍니다.

  1. 코드에서 Visual Studio에서 스마트 태그(전구)를 표시하는 식별자에 캐리트를 배치합니다. 이 예제에서는 수학 모듈 호출에 대한 스마트 태그가 표시됩니다.

    Screenshot that shows the smart tag for an identifier that needs an import statement added in Visual Studio 2019.

    Screenshot that shows the smart tag for an identifier that needs an import statement added in Visual Studio 2022.

  2. 스마트 태그 메뉴에서 필요한 모듈을 추가하거나 코드 파일에 정보를 입력하는 명령을 선택합니다. 이 예제에서는 문을 추가하는 import math 명령이 선택됩니다.

    Visual Studio에서는 현재 프로젝트 및 표준 라이브러리의 최상위 패키지 및 모듈에 대해 import 완성 기능뿐만 아니라 또한 Visual Studio는 하위 모듈 및 하위 패키지 및 모듈 멤버에 대한 완성도 제공합니다 from ... import . 완성 기능에는 함수, 클래스, 내보낸 데이터 등이 포함됩니다.

  3. 옵션을 선택한 후 파일이 변경될 것으로 예상되는지 확인합니다.

    Visual Studio는 import 다른 가져오기 후 코드 파일의 맨 위에 문을 추가하거나 동일한 모듈을 이미 가져온 경우 기존 from ... import 문에 추가합니다. 이 예제에서 import math 문은 다른 가져오기 후 파일의 맨 위에 추가됩니다.

    Screenshot that shows the import statement added after running the command from the smart tag in Visual Studio 2019.

    Screenshot that shows the import statement added after running the command from the smart tag in Visual Studio 2022.

Visual Studio는 모듈에 정의되지 않은 멤버를 필터링하려고 시도합니다. 예를 들어 가져오기 모듈의 자식이 아닌 다른 모듈로 가져온 모듈을 예로 들어 보겠습니다. 많은 모듈에서 .가 아닌 from xyz import sys문을 import sys 사용합니다. 모듈에 모듈을 제외 sys 하는 sys 멤버가 없더라도 다른 모듈에서 모듈 __all__ 을 가져오기 위한 완료가 표시되지 않습니다.

마찬가지로 Visual Studio는 다른 모듈 또는 기본 제공 네임스페이스에서 가져온 함수를 필터링합니다. 모듈이 모듈에서 함수를 settracesys 가져오는 경우 이론적으로 해당 모듈에서 함수를 가져올 수 있습니다. 그러나 가장 좋은 방법은 문을 직접 사용하는 import settrace from sys 것이므로 Visual Studio는 특히 해당 문을 제공합니다.

마지막으로 모듈은 일반적으로 제외되지만 모듈에 값이 할당된 이름과 같이 포함된 다른 값이 있다고 가정합니다. Visual Studio는 여전히 가져오기를 제외합니다. 이 동작은 다른 모듈에서 정의하므로 값을 내보내지 말아야 한다고 가정합니다. 다른 할당은 내보내지 않는 더미 값일 가능성이 높습니다.

사용하지 않는 가져오기 제거

코드를 작성할 때는 전혀 사용되지 않는 모듈에 대한 문으로 import 쉽게 끝날 수 있습니다. Visual Studio는 코드를 분석하기 때문에 가져온 이름이 문이 발생한 후 범위 내에서 사용되는지 여부를 확인하여 문이 필요한지 자동으로 확인할 import 수 있습니다.

다음 단계에서는 코드에서 사용되지 않는 가져오기를 제거하는 방법을 보여 줍니다.

  1. 편집기에서 아무 곳이나 마우스 오른쪽 단추로 클릭하고 가져오기 제거를 선택합니다. 모든 범위 또는 현재 범위에서 가져오기를 제거할 수 있습니다.

    Screenshot that shows how to access the Remove Imports menu in Visual Studio 2019.

    Visual Studio는 코드에 사용되지 않는 모듈이 있는지 확인하고 해당 import 문을 제거합니다.

  2. 옵션을 선택한 후 파일에 대해 예상되는 변경 내용이 있는지 확인합니다. 이 예제에서 Visual Studio는 사용되지 않는 세 가지 모듈인 binascii, array 및 glob을 제거합니다.

    Screenshot that shows the results of using the Remove Imports command to remove unused modules from the code in Visual Studio 2019.

  1. 코드에서 Visual Studio에서 스마트 태그(전구)를 표시하는 문에 import 캐리트를 배치합니다. 이 예제에서는 사용하지 않는 모듈 binascii, 배열 및 glob에 대한 스마트 태그가 표시됩니다.

    Screenshot that shows how to access options to remove unused imports in Visual Studio 2022.

  2. 사용하지 않은 모든 가져오기 제거 또는 사용하지 않는 가져오기 제거 옵션을 선택하여 선택한 모듈만 제거합니다.

  3. 옵션을 선택한 후 파일이 변경되는지 확인합니다. 이 예제에서 Visual Studio는 사용되지 않는 세 가지 모듈인 binascii, array 및 glob을 제거합니다.

    Screenshot that shows the results of using the Remove all unused imports command in Visual Studio 2022.

리팩터링 명령을 사용할 때 고려 사항

리팩터링 명령을 사용하기 전에 다음 고려 사항을 검토합니다.

  • 리팩터링 명령을 실행한 후 실행 취소 편집>명령을 사용하여 변경 내용을 되돌리기 수 있습니다. 이름 바꾸기 명령은 미리 보기 기능을 제공하므로 변경 내용을 적용하기 전에 볼 수 있습니다.

  • Visual Studio는 코드의 제어 흐름을 고려하지 않습니다. 지원 정의가 코드에 표시되기 전에 식별자를 사용하는 경우(예: import 문) Visual Studio는 여전히 사용되는 식별자를 처리합니다. Visual Studio는 호출 및 할당을 수행하기 전에 식별자에 대한 지원 정의를 찾아야 합니다.

  • Visual Studio는 모든 from __future__ 가져오기 문을 무시합니다. 이러한 문은 클래스 정의 내부 또는 문을 사용하여 from ... import * 수행되는 가져오기입니다.