2009-06-16 14 views
5

Une fois qu'une méthode est marquée comme obsolète, existe-t-il des outils qui remplacent ces méthodes par des solutions de contournement non-déconseillées?Java: Outils désapprouvés

+0

Ça doit être le titre le plus compliqué que j'ai jamais vu: P –

+0

... et j'essayais d'être concis. doh –

Répondre

4

Les outils automatisés ne pouvaient gérer que les cas où une nouvelle méthode ou classe préférée était utilisée pour accomplir exactement la même tâche. Tous les cas où une méthode est obsolète en raison d'un design défectueux (pensez à tout ce qui concerne la date en Java) ou parce qu'un "meilleur" moyen est maintenant supporté (pensez AWT à Swing ou SWT) nécessite beaucoup d'automatisation.

En résumé, il n'y a pas de tels outils. Je doute qu'il y en aura aussi à l'avenir.

12

Si vous souhaitez le faire automatiquement - no. Cet outil est appelé programmeur .


La raison est que les outils devraient comprendre en profondeur à la fois la dévalorisation, le « non-dévalorisation », votre programme et le langage de programmation cible.

Par exemple, java.util.Date.setMonth est déprécié en faveur de Calendar.set(Calendar.MONTH, int month).

Il s'agit d'une modification non triviale à appliquer, car elle nécessite le remplacement des instanciations d'objet, des appels de méthode, en tenant compte de la synchronisation. En fait cauchemardesque faire automatiquement.

+1

Bien que ce soit une réponse amusante, ce n'est pas vraiment prendre la question au sérieux -1 – krosenvold

+0

@krosenvold: Je suis presque toujours à moitié langue, c'est ma façon de présenter les arguments. Je ne me suis pas moqué de la question et je suis d'accord avec moi. Et merci pour le +1 Funny/-2 mod non sérieux :-), mais surtout pour laisser un commentaire. –

+0

Votre modification récente est agréable. – krosenvold

1

Je ne vois pas comment cela fonctionnerait pour le moment. Typiquement au moins certains pensé doit aller dans la modification du code client. Idéalement, la méthode obsolète inclura un commentaire disant: «Utiliser la méthode X à la place, en passant null comme paramètre final» ou quelque chose de similaire, mais seulement dans les cas les plus simples cela pourrait être entièrement automatisé. Souvent, il y aura quelque chose comme "Si vous avez besoin de traiter des entrées nulles, utilisez X. Sinon, utilisez Y."

(En outre, même dans les cas les plus simples, il n'y a actuellement aucune façon de représenter la transformation dans un format lisible par machine -. Essentiellement le protocole approprié n'a pas été défini pour autant que je sache)

C'est une bonne idée, mais je pense que l'implémenter d'une manière utile introduirait plus de complexité qu'elle n'en enlèverait. En outre, je serais très méfiant d'un outil faisant cela pour moi complètement automatiquement - je voudrais probablement prévisualiser chaque changement de toute façon. À ce stade, il ne serait généralement pas gagner beaucoup de temps à le faire manuellement pour commencer.

2

Habituellement, vous devriez utiliser quelque chose comme regexps, ANTLR ou JavaCC pour implémenter votre propre outil.

En outre, certains IDE offrent des outils de niveau relativement supérieur pour faciliter cela. Dans IntelliJ IDEA, il s'agit de «Structural Search and Replace» et «Migrate» refactoring.