2009-06-16 5 views
5

Una vez que un método está marcado como obsoleto, ¿hay alguna herramienta que reemplace estos métodos con soluciones temporales no desaprobadas?Java: Herramientas desaprovechadas

+0

Ese debe ser el título más complicado que he visto: P –

+0

... y estaba tratando de ser conciso. doh –

Respuesta

4

Las herramientas automatizadas solo podían manejar razonablemente los casos en los que hay un nuevo método o clase preferido para usar para realizar exactamente la misma tarea. Cualquier caso en el que un método sea obsoleto debido a un diseño defectuoso (piense cualquier cosa que tenga que ver con fechas en Java) o porque una forma "mejor" ahora es compatible (piense en AWT a Swing o SWT) requiere mucho pensamiento para ser automatizado.

En resumen, no existen tales herramientas. Dudo que haya alguna en el futuro también.

12

Si desea hacer esto automáticamente - no.

La herramienta se llama programador .


La razón es que las herramientas tendrían que entender profundamente tanto a la desaprobación, el 'no-desaprobación', su programa y el lenguaje de programación de destino.

Por ejemplo, java.util.Date.setMonth está en desuso en favor de Calendar.set(Calendar.MONTH, int month).

Es un cambio no trivial que se debe aplicar, ya que requiere reemplazar instanciaciones de objetos, llamadas a métodos, teniendo en cuenta la sincronización. En realidad, pesadilla para hacer de forma automática.

+1

Aunque es una respuesta graciosa, realmente no se toma en serio la pregunta -1 – krosenvold

+0

@krosenvold: Casi siempre soy medio irónico, es mi forma de presentar argumentos. No me burlé de la pregunta, y estoy de acuerdo con mi opinión. Y gracias por el mod +1 Funny/-2 Not serious :-), pero especialmente por dejar un comentario. –

+0

Su edición reciente es agradable. – krosenvold

1

No veo cómo funcionaría en este momento. Por lo general, al menos algunos piensan en cambiar el código del cliente. Lo ideal es que el método en desuso incluya un comentario que diga "Utiliza el método X en su lugar, pasando nulo como el parámetro final" o algo similar, pero solo en los casos más simples podría ser esto completamente automático. A menudo habrá algo así como "Si necesita tratar con entradas nulas, use X. De lo contrario, use Y."

(Además, incluso en los casos más simples, no hay forma actual de representación de la transformación en un formato legible por la máquina -. Básicamente el protocolo adecuado no se ha definido en lo que yo sepa)

Es una buena idea, pero sospecho que implementarla de una manera útil introduciría más complejidad de la que eliminaría. Además, sería muy cauteloso con una herramienta que me haga esto de manera completamente automática. Probablemente quiera obtener una vista previa de cada cambio de todos modos. En ese punto, por lo general no ahorraría mucho tiempo en hacerlo manualmente para comenzar.

2

Normalmente, debe usar algo como regexps, ANTLR o JavaCC para implementar su propia herramienta.

Además, algunos IDE ofrecen herramientas de nivel relativamente alto para facilitar esto. En IntelliJ IDEA estos son "Reestructuración y Reemplazo Estructural" y "Migración".

Cuestiones relacionadas