Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

CDT (инструменты разработки 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 wiki

Ответ 2

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

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

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

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

Ответ 3

Некоторые рефакторинги С++, которые поддерживаются, например, Ref ++, не должны полностью понимать синтаксис С++. Например, метод pull up, метод push down и т.д. Довольно просты. По некоторым причинам такой рефакторинг не реализован в рефакторингах CDT.

Ответ 4

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

Ответ 5

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

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