Как обновить все имена идентификатора C/C++ в проекте

Прежде чем лямбда играет роль, это - анонимный делегат. Это могло использоваться для общего кода, подобного blockgiven Ruby. Я не протестировал, как лямбда работает хотя, потому что я хочу придерживаться.NET 2.0 до сих пор.

, Например, когда Вы хотите удостовериться, что Вы не забываете закрывать свои HTML-тэги:

MyHtmlWriter writer=new MyHtmlWriter();
writer.writeTag("html", 
  delegate ()
  { 
    writer.writeTag("head", 
       delegate() 
       { 
           writer.writeTag("title"...);
       }
    )
  })

я уверен, является ли лямбда опцией, которая могла бы привести к намного более чистому коду:)

5
задан jackhab 22 July 2009 в 11:32
поделиться

5 ответов

Хотя я один из тех, кто часто указывает, что имена с начальными символами подчеркивания могут быть зарезервированы, я настоятельно рекомендую вам не делать этого, если у вас нет проблем, вызванных именами. Внесение этого глобального изменения сделает вашу систему управления версиями менее полезной, чем она могла бы быть в противном случае, из-за возникновения всевозможных ложных различий. Кроме того, существует вероятность создания повторяющихся имен.

Кроме того, есть много имен с префиксом подчеркивания, которые являются совершенно допустимыми. Сразу вспоминаются __ LINE __ и __ FILE __ и т.д., а также все имена нестандартных функций, которые могут быть предоставлены ваша конкретная реализация. Отфильтровать эти имена будет далеко не тривиально (я бы сказал, почти невозможно), конечно, простого Perl или сценария sed будет недостаточно.

Поэтому вместо этого я бы посоветовал вам изменить имена по каждому файлу. по мере внесения других изменений в код. Измените стандарты программирования, чтобы избежать подчеркивания в начале имен, и напишите новый код в соответствии со стандартами.

13
ответ дан 18 December 2019 в 05:55
поделиться

Если вы используете Visual Studio, существуют плагины рефакторинга, такие как Visual Assist X, которые помогут вам в этом.

7
ответ дан 18 December 2019 в 05:55
поделиться

Perl должен справиться с этой задачей, но есть Coccinelle , когда это становится сложно.

7
ответ дан 18 December 2019 в 05:55
поделиться

Netbeans может сделать это для всего проекта, используя команду меню Refactor-> Rename. Но это работает только для одного идентификатора за раз, поэтому вам придется повторять его для каждого идентификатора, который вам нужно изменить.

1
ответ дан 18 December 2019 в 05:55
поделиться
​​

Если ваши регрессионные тесты надежны, то у вас не должно возникнуть проблем, если вы просто напишете быстрый скрипт на Perl, чтобы заменить все и запустить набор тестов. Если у вас нет надежных регрессионных тестов ... ну, тогда вы можете заменить сценарий perl и просто пересобрать код. Если компиляция работает, то велики шансы, что все в порядке. Другими словами, попробуйте быстрое решение и используйте только специализированный инструмент, если он не работает.

0
ответ дан 18 December 2019 в 05:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: