Переименование множества переменных во многих классах Java сразу

Я работаю в довольно большом Java-проекте (2500+ классов), который использует старый стандарт кода, где все переменные-члены имеют префикс "m_" (например, m_temperature). Для этого больше нет причин, и я бы хотел избавиться от них, но:

  • Чтобы внести изменения, я должен сделать все переменные сразу.
  • Он не должен генерировать никаких ошибок.

Первый наивный подход простого переименования всех "m_variable" в "переменную" не будет достаточным, поскольку это может вызвать коллизии имен между уже существующей переменной с именем "variable" и недавно переименованной.

Итак, подведем итог: Как переименовать все эти отвратительные элементы variablest, не вдаваясь в проблемы, и есть ли больше проблем, чем упомянутые выше?

Да, я знаю функции рефакторинга/переименования в среде IDE,, пожалуйста, помните, что я хочу делать изменения ко всем переменным, соответствующим критериям сразу, а не по щелчку правой кнопкой мыши на переменные и переименовывая их один за другим.

Ответы

Ответ 1

Theres a вопрос о SC, который посвящен массивному рефакторингу в java. Лучший ответ заключается в использовании japvaparser и внедрении посетителя для фактического рефакторинга. Это не должно быть так много для простого переименования.

Ответ 2

Как насчет ниже: массовое переименование переменных Java

by Simulant

нажмите на имя переменной.

1: нажмите [alt] + [shift] + [R]

2: введите новое имя.

3: нажмите [enter] для подтверждения.

- > все экземпляры этой переменной будут переименованы.

Ответ 3

Чтобы ответить на второй вопрос (есть ли еще проблемы)

  • Я бы избегал глобальных переменных. encapsulation, чтобы вы могли локализовать функциональность.
  • Я бы выполнил некоторые модульные тесты, чтобы вы могли проверить будущие изменения. На данный момент, кажется, ваша единственная доступная проверка заключается в том, что ваш проект правильно компилируется.

Я понимаю, что оба из них являются потенциально значимыми проблемами в существующем проекте. Но стоит посмотреть, чтобы определить возможные точки боли и работать над ними в первую очередь.

Ответ 4

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

Однако мы должны делать это вручную для каждой переменной.

Ответ 6

Если вы используете eclispe IDE, вы можете сделать это легко.

Шаги:

  • выберите переменную
  • щелкните по нему правой кнопкой мыши
  • нажмите на рефакторинг
  • нажмите на переименование

даже в netbeans вы можете следовать тем же самым шагам. IDE находит ссылку и использует и заменяет все это.