Каково состояние поддержки рефакторинга C++ в Eclipse?

Находится ли он в состоянии, когда он действительно полезен и может делать больше, чем просто переименовывать классы?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
20
0
7 611
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

CDT (Инструменты разработки C / C++ - проект eclipse) 5.0 содержит множество новых рефакторингов.

* Declare Method
* Extract Baseclass
* Extract Constant
* Extract Method
* Extract Subclass
* Hide Method
* Implement Method
* Move Field / Method
* Replace Number
* Separate Class
* Generate Getters and Setters

Есть рефакторинг CDT вики

Да, и большинство из них на самом деле не работают, если код слишком сложен. Иногда возникают проблемы с такими вещами, как перемещение метода, переименование и т. д.

не используйте макросы и #if, и все будет хорошо.

Mykola Golubyev 20.05.2009 13:26

C++ - это очень сложный язык для поддержки рефакторинга. Это связано с тем, что язык очень сложен и труден для синтаксического анализа, но в основном из-за препроцессора.

Препроцессор - это основная причина, по которой IDE C / C++ отстают от других языков.

Это и тот факт, что C++ не имеет грамматики без сохранения состояния.

Matt Cruikshank 26.08.2009 02:31

Были предприняты многочисленные попытки предоставить инструменты рефакторинга для C++, большинство из них потерпели неудачу довольно рано, потому что создание таких инструментов требует полной способности обрабатывать исходный код C++, т.е. вам нужен рабочий и полный компилятор C++ в первую очередь для реализации даже самые простые формы автоматизированного преобразования исходного кода в исходный.

К счастью, с появлением плагины в gcc стало, наконец, предсказуемо, что связанные усилия могут фактически использовать для этой цели существующий компилятор C++, вместо того, чтобы прибегать к их собственным реализациям компилятора C++.

Для более подробного обсуждения вы можете проверить это.

На данный момент наиболее многообещающим кандидатом на поддержку широко автоматизированного рефакторинга C++, безусловно, является проект Mozilla свинина, а также связанный с ним проект Дегидра.

Некоторые рефакторинги C++, которые поддерживаются, например, Ref ++, не требуют полного понимания синтаксиса C++. Например, метод подтягивания, метод выталкивания и т. д. Довольно просты. По какой-то причине этот вид рефакторинга не реализован в рефакторинге CDT.

Другие вопросы по теме