Python에 어떤 리팩토링 도구를 사용합니까?
이름을 바꾸고 싶은 클래스가 많이 있습니다. 그들 중 일부는 작은 이름을 가지고 있고 그 이름은 다른 클래스 이름에서 재사용되기 때문에 그 이름을 변경하고 싶지 않습니다. 이 중 대부분은 Python 코드에 있지만 클래스 이름을 참조하는 XML 코드도 있습니다.
간단한 검색 및 바꾸기는 지금까지만 얻을 수 있습니다. 제 경우에는 AdminAction의 이름을 AdminActionPlug로, AdminActionLogger를 AdminActionLoggerPlug로 바꾸고 싶습니다. 그러면 첫 번째 검색 및 바꾸기도 두 번째 잘못을 누르게됩니다.
누구든지 Python 리팩토링 도구에 대한 경험이 있습니까? XML 문서에서도 클래스 이름을 수정할 수 있다면 보너스 포인트를 얻을 수 있습니다.
그 동안 저는 vim과 일종의 통합이있는 두 가지 도구를 사용해 보았습니다.
첫 번째는 Vim (및 emacs) 플러그인과 함께 제공되는 Python 리팩토링 라이브러리 인 Rope 입니다. 몇 가지 이름 변경을 시도했는데 예상대로 작동했습니다. 리팩토링을 diff로 미리 볼 수있었습니다. 약간의 텍스트 기반이지만 저에게는 괜찮습니다. 배우는 데 시간이 더 걸립니다.
두 번째는 내가 이름에 포인트를이기는 것 같아요 자전거 수리 남자 입니다. 또한 vim 및 emacs에 연결됩니다. 아직 많이 해보지는 못했지만 오래 전에 시도했던 기억이납니다.
아직 두 가지 모두를 충분히 사용하지 않았거나 더 많은 유형의 리팩토링을 시도하지 않았지만 더 많은 해킹을 할 것입니다.
리팩토링뿐만 아니라 PyCharm 을 강력히 추천 합니다. 몇 년 전에 첫 번째 PyCharm 답변이 여기에 게시 된 이후 PyCharm의 리팩토링 지원이 크게 향상되었습니다.
PyCharm에서 사용 가능한 Python 리팩토링 (PyCharm 2016.2에서 마지막으로 확인 된 2016/07/27)
- 서명 변경
- Python 패키지 / 모듈로 변환
- 부
- 리팩토링 추출
- 인라인
- 부울 반전
- 최상위 기능 만들기
- 리팩토링 이동
- 멤버를 아래로 밀어
- 회원 끌어 오기
- 리팩토링 이름 바꾸기
- 안전한 삭제
XML 리팩토링 (XML 파일의 컨텍스트 메뉴에서 확인) :
- 이름 바꾸기
- 움직임
- 부
- CTE로 하위 쿼리 추출
- 인라인
자바 스크립트 리팩토링 :
- JavaScript에서 매개 변수 추출
- JavaScript에서 서명 변경
- JavaScript에서 변수 추출
WingIDE 4.0 (WingIDE는 제가 선택한 Python IDE입니다)은 몇 가지 리팩토링을 지원하지만, 방금 최신 베타 인 beta6을 사용해 보았습니다. 아직해야 할 일이 있습니다. Retract Method는 잘 작동하지만 Rename Symbol은 작동하지 않습니다.
업데이트 : 4.0 릴리스는 모든 리팩토링 도구를 수정했습니다. 그들은 이제 훌륭하게 작동합니다.
IDE는 리팩토링을 지원할 수 있습니다! Eric, Eclipse, WingIDE에 리팩토링 도구가 내장되어 있는지 확인하십시오 (이름 바꾸기 포함). 그리고 그것은 매우 안전한 리팩토링입니다. 만약 무언가 잘못 될 수 있다면 IDE는 ref.
또한 리팩토링 중에 코드가 손상되지 않았는지 확인하기 위해 몇 가지 단위 테스트를 추가하는 것을 고려하십시오.
PyCharm 에는 몇 가지 리팩토링 기능이 있습니다.
파이썬 리팩터링
이름 변경 리팩토링을 사용하면 전역 코드 변경을 안전하고 즉시 수행 할 수 있습니다. 파일 내의 로컬 변경은 그 자리에서 수행됩니다. 리팩토링은 일반 Python 및 Django 프로젝트에서 작동합니다.
사용이 변수 / 필드 / 일정 소개 및 인라인 현지 방법 내에서 코드 구조를 개선을, 방법을 추출 , 더 이상 방법을 깰 슈퍼 클래스를 추출 , 밀어 올리다 , 아래로 당겨 및 이동 방법 및 클래스를 이동합니다.
Bowler ( https://pybowler.io )를 살펴 보겠습니다 .
로프보다 명령 줄에서 직접 사용하는 것이 더 적합하며 스크립팅 (일회성 스크립트)을 권장합니다.
sed를 사용하여이를 수행 할 수 있습니다. 비결은 정규 표현식이 단어 경계를 인식 할 수 있다는 것을 상기하는 것입니다. 이것은 Windows에서 Cygwin이고 Mac OS에서 개발 도구를 설치해야 할 수있는 도구를 제공하는 경우 모든 플랫폼에서 작동합니다. 잘 모르겠습니다. Linux에는 바로 사용할 수 있습니다. 따라서 grep, xargs 및 sed는 12 시간 동안 man 페이지를 읽고 시행 착오를 거친 후 트릭을 수행해야합니다.)
참고 URL : https://stackoverflow.com/questions/28796/what-refactoring-tools-do-you-use-for-python
'development' 카테고리의 다른 글
Amazon EC2 : Ubuntu (PV) 또는 Ubuntu (HVM) (0) | 2020.11.18 |
---|---|
reactjs에서 문서 키 누르기 듣기 (0) | 2020.11.18 |
invokeinterface의 요점은 무엇입니까? (0) | 2020.11.18 |
hg 태그와 hg 북마크의 차이점은 무엇입니까? (0) | 2020.11.18 |
구성 스크립트는 어떻게 만듭니 까? (0) | 2020.11.18 |