Java: устаревшие инструменты - PullRequest
5 голосов
/ 16 июня 2009

После того, как метод помечен как устаревший, существуют ли какие-либо инструменты, которые заменяют эти методы на устаревшие обходные пути?

Ответы [ 4 ]

12 голосов
/ 16 июня 2009

Если вы хотите сделать это автоматически - нет .

Инструмент называется программист .


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

Например, java.util.Date.setMonth устарела в пользу Calendar.set(Calendar.MONTH, int month).

Это нетривиальное изменение для применения, поскольку оно требует замены экземпляров объекта, вызовов методов с учетом синхронизации. На самом деле кошмар, чтобы сделать автоматически.

4 голосов
/ 16 июня 2009

Автоматизированные инструменты могут разумно обрабатывать случаи, когда есть новый предпочтительный метод или класс, который можно использовать для выполнения точно такой же задачи. В любом случае, когда метод считается устаревшим из-за неправильного проектирования (например, что-либо, имеющее дело с датами в Java) или из-за того, что теперь поддерживается «лучший» способ (например, AWT to Swing или SWT), требуется слишком много усилий для автоматизации.

Короче, нет таких инструментов нет. Я сомневаюсь, что когда-нибудь будет и в будущем.

2 голосов
/ 16 июня 2009

Обычно вы должны использовать что-то вроде регулярных выражений, ANTLR или JavaCC для реализации своего собственного инструмента.

Кроме того, некоторые IDE предлагают инструменты более высокого уровня для облегчения этого. В IntelliJ IDEA это рефакторинг "Структурный поиск и замена" и "Миграция".

1 голос
/ 16 июня 2009

Я не вижу, как это будет работать в данный момент. Как правило, по крайней мере некоторые думают, что нужно изменить код клиента. В идеале устаревший метод должен включать комментарий: «Вместо этого используйте метод X, передавая нулевой в качестве конечного параметра» или что-то подобное, но только в простейших случаях это может быть полностью автоматизировано. Часто будет что-то вроде «Если вам нужно иметь дело с пустыми записями, используйте X. В противном случае используйте Y».

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

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

...