태그 보관물: visual-studio

visual-studio

Visual C ++에 리팩터링 기능이없는 이유는 무엇입니까? 정말 그리워합니다. 나는 이것을

Visual Studio 2008에서 C ++로 프로그래밍 할 때 C #을 사용할 때 리팩터링 메뉴에 표시되는 것과 같은 기능이없는 이유는 무엇입니까?

저는 Rename을 끊임없이 사용하는데 그것이 없을 때 정말 그리워합니다. 나는 이것을 제공하는 플러그인을 얻을 수 있다고 확신하지만 C ++를 사용할 때 왜 IDE에 통합되지 않습니까? 이것은 C ++를 구문 분석해야하는 방식에 문제가 있기 때문입니까?



답변

C ++의 구문과 의미는 리팩토링 기능을 올바르게 구현 하는 것을 매우 어렵게 만듭니다 . 사례의 90 %를 커버하기 위해 비교적 간단한 것을 구현하는 것이 가능하지만, 나머지 10 %의 경우 간단한 솔루션이 변경하고 싶지 않은 것을 변경하여 코드를 끔찍하게 깨뜨릴 것입니다.

http://yosefk.com/c++fqa/defective.html#defect-8 에서 C ++의 모든 리팩토링 코드가 처리해야하는 어려움에 대한 간략한 설명을 읽으십시오 .

마이크로 소프트는 C ++를위한이 특정 기능을 활용하기로 결정한 것으로 보이며, 제 3 자 개발자가 할 수있는 일을 할 수 있도록 남겨 두었습니다.


답변

왜 이런지 잘 모르겠지만 도움이되는 타사 도구가 있습니다. 예를 들어, 지금은 Visual Assist X (Whole Tomato)를 평가하고 있습니다. 우리는 또한 Visual Studio 2005를 사용하고 있습니다.


답변

devexpress 는 Add-in Refactor를 제공합니다 ! VS2005 및 VS2008 용 C ++ 용.


답변

힘들게 느끼지 마십시오. VB.Net에서도 사용할 수 없습니다. 🙂

C ++는 C #과 비교할 때 구문 분석하기 어려운 언어입니다 ( “Option Explicit”및 “Option Strict”가 켜져 있지 않는 한 VB도 마찬가지입니다. 훨씬 더 큰 컨텍스트에서 코드 줄이 무엇을하는지 정확히 알기 어렵습니다).

추측으로는 그것을 제공하는 “어려움”과 관련이있을 수 있습니다.

추신 : 유용한 정보를 제공하지 않는다는 것을 알고 있기 때문에 내 답변을 커뮤니티 위키로 표시했습니다.


답변

Eclipse는 ‘이름 바꾸기’를 포함하여 C ++ 리팩토링을 거의 수행하지 않습니다. 여기 StackOverflow 에서이 질문을 확인하십시오 .

Eclipse와 함께 Microsoft 컴파일러를 사용할 수도 있습니다. 여기에서 확인 하십시오 .

Eclipse를 사용 해보고 자신에게 맞는지 확인하십시오.


답변

이 문제에 대해 많은 혼란과 혼란이 있습니다. 이 놀라운 YouTube 동영상은 C ++ 리팩토링이 어려운 이유를 명확하게 보여줍니다. https://www.youtube.com/watch?v=mVbDzTM21BQ

tl; dr Google은 중간 형식에 대한 액세스를 허용하는 컴파일러 (Clang + LLVM)를 사용하여 전체 1 억 줄 C ++ 코드베이스를 리팩터링합니다.

요컨대, 제 3자가 여기에 얽매여 있습니다. MS가 중간 결과를 동일한 방식으로 출력하지 않는 한 그들이 VS C ++를 리팩토링 할 현실적인 방법은 없습니다. 프로그래밍 문제 관점에서 생각해 보면 이것은 분명합니다. VS C ++를 리팩터링하려면 VS가 동일한 버그, 제한 사항, 결함, 해킹, 바로 가기, 해결 방법 등을 사용하여 정확히 동일한 방식으로 C ++를 컴파일 할 수 있어야합니다. Coderush와 Resharper와 같은 일반적인 용의자는 분명히 노력하고 있지만 몇 년이 지났지 만 그런 종류의 광기에 대한 예산이 없습니다 …

http://www.jetbrains.com/resharper-cpp/

2016 업데이트 : Resharper는 이제 C ++ 리팩터링에서 괜찮은 작업을 수행합니다. 제한은 순전히 대규모 / 거대한 프로젝트에 적용됩니다.


답변

MS는 마침내 이것을했습니다 : https://channel9.msdn.com/Shows/C9-GoingNative/GoingNative-33-C-Refactoring-in-Visual-Studio-2015#time=04m37s

그들은 약 10 년 전에 이것을 시작했고, 나는 오래 전에 ms channel9를 봤던 것을 기억합니다.