Есть ли способ в Java постепенно изменить имя класса?

У меня есть большой объем кода Java, в котором используется класс XXX. Со временем значение класса изменилось, и название перестало быть подходящим. Чтобы сделать код более читабельным, я хотел бы изменить имя класса на YYY.

Один из вариантов - отредактировать все файлы за один проход и изменить XXX на YYY, но фактическое имя класса не уникально - есть другие классы с тем же именем, другой пакет - поэтому мне нужно посмотреть код . Я хотел бы иметь возможность внести некоторые изменения, проверить их правильность, изменить еще несколько, проверить еще несколько и т. д. В течение этого переходного периода я хочу иметь возможность использовать YYY и XXX взаимозаменяемо. В конце концов я бы исключил XXX.

Мне нужна концепция «псевдоним», где я мог бы сделать YYY и псевдоним XXX, но в Java этого нет.

Я мог бы сделать YYY подклассом XXX со всеми теми же конструкторами и методами. Это будет нормально работать, когда переменная объявлена ​​как XXX, а я присваиваю значение типа YYY. Это также будет работать, если параметр метода равен XXX, а я передаю YYY. Но это не будет работать наоборот, когда параметр объявлен YYY, а у меня есть значение XXX для отправки.

Я мог бы внедрить YYY в наследование, чтобы XXX расширял YYY, но у меня та же проблема, что и выше: в коде, в котором смешано используются объявления XXX и значения YYY, возникают проблемы.

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

ОБНОВЛЕНИЕ

Ответ ниже заключается в том, что, хотя в Java нет способа сделать это, для этого также не должно быть причин. Затем я установил и рефакторинг кода и описал свой опыт в этом сообщении в блоге: Не терпите плохие имена


person AgilePro    schedule 09.02.2013    source источник
comment
Насколько велика ваша система?   -  person starblue    schedule 09.02.2013
comment
Кодовая база не huge, как это делают системы, а слишком велика для обслуживания одним человеком: от 100 до 200 тысяч строк.   -  person AgilePro    schedule 09.02.2013
comment
Возможные варианты: Дать общедоступную версию Строковое поле? Дайте ему частное длинное поле serialVersionUID?   -  person Hovercraft Full Of Eels    schedule 09.02.2013
comment
Использование IDE для переименования уже есть в ответах, но похоже, что вам действительно следует изучить современные инструменты разработки ПО. Попробуйте хотя бы Eclipse, Netbeans и IntelliJ Idea с вашей кодовой базой и посмотрите, что вам больше подходит. Затем исправьте проблемы, на которые жалуется IDE (настройте, чтобы отключить предупреждения, которые вам не нужны, после поиска в Google тех, которые вы не понимаете). Затем просмотрите все инструменты рефакторинга, которые они предлагают, и перестаньте собирать технический долг с кодом, который, как вы знаете, нуждается в рефакторинге, но кажется слишком сложным.   -  person hyde    schedule 09.02.2013
comment
+1 за желание изменить имя класса, чтобы отразить его поведение   -  person Miserable Variable    schedule 16.02.2013


Ответы (1)


Используйте интегрированную среду разработки, например Eclipse, и используйте ее инструменты рефакторинга, чтобы переименовать класс. Это автоматически изменит его везде, где он используется, обновит импорт и т. д.

person Jesper    schedule 09.02.2013
comment
у вас есть более подробная информация о конкретном изменении имен классов? - person AgilePro; 09.02.2013
comment
Реальный ответ заключается в том, что нет возможности иметь два эквивалентных имени класса, которые я рассмотрю, используя Eclipse для внесения изменений. - person AgilePro; 11.02.2013