вообразите страницу Excel. Со столбцами, заполненными с формулами для вычисления Вас налоговая декларация.
Вся логика сделана объявленная в ячейках, порядок вычисления, определяют самой формулой, а не процедурно.
, Который является видом того, о чем декларативное программирование - все. Вы объявляете пространство задач и решение, а не поток программы.
Пролог является единственным декларативным языком, у меня есть использование. Это требует другого вида размышления, но хорошо учиться, представить ли только Вас чему-то другому, чем типичный язык процедурного программирования.
Я считаю Visual Assist X с Visual Studio очень полезным. Другой вариант - Refactor for C ++ .
Если вы используете Visual C ++ (Express Edition предоставляется бесплатно ), вы можете использовать Visual Assist с сайта www.wholetomato.com (ссылка на функции рефакторинга C ++).
В настоящее время я не могу рекомендовать какой-либо инструмент рефакторинга для C ++, и уж тем более не для больших баз кода, состоящих из 100 тыс. Строк и выше. Я надеялся, что это изменится, как OP, и я надеюсь, что однажды что-то будет. Я опасаюсь, что сам язык, возможно, придется значительно изменить, прежде чем мы увидим какие-либо действительно хорошие инструменты.
Кстати, SlickEdit отказался от своих функций рефакторинга?
Я думаю, что это делает набор инструментов для реинжиниринга программного обеспечения DMS . Это механизм преобразования кода, разработанный для больших масштабов и обрабатывающий C ++. Однако понятия не имею, насколько элегантен результат.
У Mozilla есть собственный инструмент рефакторинга под названием Pork ( Wiki , Developer Wiki ). Вот блог разработчика, стоящего за Pork. Из того, что я читал, Pork успешно использовался при рефакторинге в Mozilla.
Pork должен помочь, если вы из страны * nix, для Visual Studio я тоже рекомендую Visual Assist.
Visual Assist и Visual Studio значительно упрощают работу с большими базами кода. Визуальный помощник помогает отслеживать, как используется класс или член, и более эффективно переименовывает его без ложных срабатываний, чем поиск и замена.
Если вы хотите реинжиниринг своей кодовой базы: MOOSE. Но это большой набор инструментов для анализа и реинжиниринга, а не редактор.
Наш DMS Software Reengineering Toolkit - это механизм преобразования, предназначенный для выполнения сложных преобразований больших массивов кода, включая C ++. Он использовался для внесения надежных изменений в системы, содержащие миллионы строк кода. Он работает с использованием точных для компилятора анализаторов языков и преобразователей.
Он имеет полный синтаксический анализатор C ++ с разрешением имени и типа, строит AST кода, может применять процедурные преобразования или преобразования исходного кода (с поверхностным синтаксисом C ++) для изменения этих деревьев и регенерировать компилируемый вывод с сохраненными комментариями. (Редактировать: 01.07.2011: Теперь C ++ 1X в той мере, в какой мы понимаем стандарт :)
Он использовался в крупномасштабных проектах реинжиниринга, включая изменение архитектуры компонентов C ++ и полностью автоматизированные переводы. между языками. Вы можете прочитать об этом на веб-сайте.
DMS также используется для создания инструментов анализа произвольных источников. Примеры включают обнаружение клонов, покрытие тестами, интеллектуальное различие (сравнение структур исходного кода и абстрактные операции редактирования вместо строк с простой вставкой и удалением) и т. Д.
То, чем он не является (в настоящее время), является интерактивным инструментом рефакторинга. Мы считаем, что для правильного выполнения большинства рефакторингов требуется глубокий контроль и анализ потока данных. DMS имеет общий механизм для поддержки этого, и этот механизм на данный момент реализован для C, COBOL и Java, а C ++ - следующим на очереди. Это тяжелая работа. Вы не увидите много серьезных инструментов для рефакторинга C ++, пока не решите проблему подобного рода. Сначала вам понадобится полный синтаксический анализатор C ++: -}
РЕДАКТИРОВАТЬ 05.07.2011: Похоже, мы собираемся опробовать интерактивную версию. Мы выиграли SBIR Фазы I Министерства энергетики, чтобы выяснить, как это сделать. См. http://science.energy.gov/sbir/awards-and-general-stats/fy-2011/phase-i-by-state/?p=1#tx (Ищите семантические схемы под «Техасом»). В спешке не ждите результата; это всего лишь начало трехэтапной многолетней программы для перехода к инструменту.
РЕДАКТИРОВАТЬ 8/11/2011: Первый прогресс ... теперь мы обрабатываем все директивы C ++ 0x и OpenMP.
РЕДАКТИРОВАТЬ 1/4/2012: Выполняет полный анализ потока управления кода C ++.
РЕДАКТИРОВАТЬ 15/9/2014: Теперь у вас есть интерфейсный синтаксический анализатор / механизм преобразования C ++ 14. Даже переименование довольно надежно на данный момент: -}
Если вы используете emacs, попробуйте Xrefactory . Он поддерживает извлечение методов, переименование классов / функций / переменных и параметры вставки / удаления / перемещения. Он также имеет очень хороший / быстрый механизм завершения кода.