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