Pergunta

Uma vez que o método está marcado como obsoleto, existem ferramentas que substituem estes métodos com soluções alternativas não-obsoleto?

Foi útil?

Solução

ferramentas automatizadas só poderia razoavelmente lidar com casos em que há um novo método preferido ou classe de uso para realizar exatamente a mesma tarefa. Qualquer caso em que um método está obsoleto por causa do projeto defeituoso (pense tráfico nada com a data de em Java) ou porque um "melhor" forma é agora suportado (pense AWT para Swing ou SWT) requer muito longe para muito pensamento a ser automatizado.

Em suma, não há nenhuma dessas ferramentas. Eu duvido que nunca vai ser qualquer no futuro também.

Outras dicas

Se você gostaria de fazer isso automaticamente -. não

A ferramenta é chamada de programador .


A razão é que as ferramentas que precisam entender profundamente tanto a depreciação, o 'un-depreciação', seu programa e a linguagem de programação alvo.

Por exemplo, java.util.Date.setMonth é depreciado em favor do Calendar.set(Calendar.MONTH, int month).

Isso é uma mudança não-trivial para aplicar, uma vez que exige a substituição instantiations objeto, chamadas de método, tendo em conta de sincronização. Na verdade pesadelo para fazer automaticamente.

Normalmente, você deve usar algo como regexps, ANTLR ou JavaCC para implementar sua própria ferramenta.

Além disso, algumas IDEs ofertas relativamente ferramentas de alto nível para facilitar isso. Em IntelliJ IDEA estes são "Pesquisa estrutural e substituir" e "migrar" refatoração.

Eu não posso ver como isso funcionaria no momento. Normalmente, pelo menos, alguns pensei precisa ir em mudar o código do cliente. Idealmente o método obsoleto irá incluir um comentário dizendo: "Use o método X vez, passando NULL como o parâmetro final" ou algo semelhante, mas apenas nos casos mais simples isso poderia ser totalmente automatizado. Muitas vezes, haverá algo como "Se você precisa lidar com entradas nulas, uso X. Caso contrário, use Y".

(Além disso, mesmo nos casos mais simples, não há nenhuma maneira atual de representar a transformação em um formato legível por máquina -. Basicamente o protocolo apropriado não foi definido, tanto quanto eu estou ciente)

É uma boa idéia, mas eu suspeito que para implementá-lo de forma útil iria introduzir mais complexidade do que seria remover. Além disso, eu seria muito cauteloso de uma ferramenta fazendo isso por mim de forma totalmente automática - Eu provavelmente deseja visualizar cada mudança de qualquer maneira. Nesse ponto, ele geralmente não iria economizar muito tempo mais fazê-lo manualmente para começar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top