Visual Studio 리팩토링:제거 방법
-
08-06-2019 - |
문제
제거 메서드 리팩토링을 수행할 수 있는 Visual Studio 추가 기능이 있나요?
다음과 같은 방법이 있다고 가정합니다.
Result DoSomething(parameters)
{
return ComputeResult(parameters);
}
또는 Result가 무효인 변형입니다.
리팩토링의 목적은 DoSomething에 대한 모든 호출을 ComputeResult에 대한 호출 또는 ComputeResult가 메서드 호출이 아닌 경우 매개 변수를 사용하는 표현식으로 바꾸는 것입니다.
해결책
질문을 이해하면 Resharper는 이 '인라인 메소드'를 호출합니다. Ctrl 키 - 아르 자형 + 나
다른 팁
나는 가장 간단한 방법으로 할 것입니다:
- ComputeResult 메서드의 이름을 ComputeResultX로 바꿉니다.
- DoSomething 메서드의 이름을 ComputeResult로 바꿉니다.
- DoSomething 메서드 제거(현재는 ComputeResult임)
- ComputeResultX 메서드의 이름을 다시 ComputeResult로 바꿉니다.
어쩌면 VS는 마지막 이름 변경으로 인해 약간의 충돌을 보일 수도 있지만 무시하십시오.
"이름 바꾸기"란 다음을 의미합니다.메서드 이름을 덮어쓴 후 드롭다운(Shift+Alt+F10)을 사용하고 "이름 바꾸기"를 선택합니다.모든 항목이 새 이름으로 대체됩니다.
Visual Studio 2005 및 2008에 추가 리팩터링 옵션을 추가할 수 있는 몇 가지 제품이 있으며, 그 중 더 나은 제품은 다음과 같습니다. 리팩터링!찬성 그리고 리샤퍼.
제거 방법에 관해서는 이 작업을 점진적으로 수행하는 방법에 대한 설명이 표준 리팩토링 책에 있습니다.
개인적으로 저는 다음과 같은 패턴을 따릅니다(각 단계 사이에 단위 테스트 컴파일 및 실행이 발생한다고 가정).
- 새 방법 만들기
- 이전 메서드의 본문을 제거하고 새 메서드를 호출하도록 변경합니다.
- 이전 메서드에 대한 모든 참조를 검색하고(메서드 이름을 마우스 오른쪽 버튼으로 클릭하고 "모든 참조 찾기" 선택) 새 메서드에 대한 호출로 변경합니다.
- 이전 메서드를 [Obsolete]로 표시합니다(이제 호출하면 빌드 중에 경고로 표시됨).
- 이전 메소드 삭제
그런 리팩토링에 관해서라면 시도해 보세요 ReSharper.
메서드 이름을 마우스 오른쪽 버튼으로 클릭하고 "사용 위치 찾기"를 클릭한 다음 참조를 찾을 수 없을 때까지 리팩터링하면 됩니다.
그리고 dlamblin이 언급했듯이 최신 버전의 ReSharper에는 메소드를 인라인할 수 있는 가능성이 있습니다.그러면 필요한 작업이 수행됩니다.
Visual Studio에서 메서드 이름을 마우스 오른쪽 버튼으로 클릭하고 "모든 참조 찾기"를 클릭할 수도 있습니다.
나는 개인적으로 CTRL 키 + 옮기다 + 시간 에게 Find & Replace