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





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 вики
Да, и большинство из них на самом деле не работают, если код слишком сложен. Иногда возникают проблемы с такими вещами, как перемещение метода, переименование и т. д.
C++ - это очень сложный язык для поддержки рефакторинга. Это связано с тем, что язык очень сложен и труден для синтаксического анализа, но в основном из-за препроцессора.
Препроцессор - это основная причина, по которой IDE C / C++ отстают от других языков.
Это и тот факт, что C++ не имеет грамматики без сохранения состояния.
Были предприняты многочисленные попытки предоставить инструменты рефакторинга для C++, большинство из них потерпели неудачу довольно рано, потому что создание таких инструментов требует полной способности обрабатывать исходный код C++, т.е. вам нужен рабочий и полный компилятор C++ в первую очередь для реализации даже самые простые формы автоматизированного преобразования исходного кода в исходный.
К счастью, с появлением плагины в gcc стало, наконец, предсказуемо, что связанные усилия могут фактически использовать для этой цели существующий компилятор C++, вместо того, чтобы прибегать к их собственным реализациям компилятора C++.
Для более подробного обсуждения вы можете проверить это.
На данный момент наиболее многообещающим кандидатом на поддержку широко автоматизированного рефакторинга C++, безусловно, является проект Mozilla свинина, а также связанный с ним проект Дегидра.
Некоторые рефакторинги C++, которые поддерживаются, например, Ref ++, не требуют полного понимания синтаксиса C++. Например, метод подтягивания, метод выталкивания и т. д. Довольно просты. По какой-то причине этот вид рефакторинга не реализован в рефакторинге CDT.
не используйте макросы и #if, и все будет хорошо.