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

StackOverflow https://stackoverflow.com/questions/130913

  •  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 ++ отстают от других языков.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top