Comment passer d'une méthode à partir d'une classe à une autre classe lorsque les deux classes ne sont pas du tout liées
Je suis en train de re facteur de code en rupture de classe dans plusieurs autres classes.
pour ce faire je veux déplacer certaines méthodes déjà existantes dans mon ancienne classe à la nouvelle catégorie.
Mais ces méthodes sont appelées dans beaucoup de lieux et de mettre à jour manuellement les références semble fastidieux. Donc, est-il possible de déplacer des méthodes ainsi que de mettre à jour leurs références dans eclipse?
Bien que sa difficile de dire quoi que ce soit sans voir le code, je pense que l'héritage devrait résoudre votre problème
Mais je ne veux pas hériter. Je vais supprimer l'ancienne classe une fois que les nouvelles classes sont faites.
Je voudrais déplacer la référence, puis de parcourir tous les fichiers montrant les erreurs et de faire Ctrl+Shift+O pour auto-organiser les importations.
Faire une classe Utilitaire avec des méthodes statiques. Ainsi, vous pouvez renvoyer n'importe où dans votre application sans objet la création et tous les.
Je suis d'accord avec @Sandhu
Mais je ne veux pas hériter. Je vais supprimer l'ancienne classe une fois que les nouvelles classes sont faites.
Je voudrais déplacer la référence, puis de parcourir tous les fichiers montrant les erreurs et de faire Ctrl+Shift+O pour auto-organiser les importations.
Faire une classe Utilitaire avec des méthodes statiques. Ainsi, vous pouvez renvoyer n'importe où dans votre application sans objet la création et tous les.
Je suis d'accord avec @Sandhu
OriginalL'auteur Shruti Rawat | 2013-11-15
Vous devez vous connecter pour publier un commentaire.
Je voudrais faire de cette façon:
Aussi un bon livre pour apprendre à appliquer re-factoring modèles est Travailler Efficacement avec le Code existant
OriginalL'auteur René Link
si vous utilisez eclipse IDE puis refactoriser va vous aider.
OriginalL'auteur Prabhakaran
Je vais vous montrer le processus que j'ai suivi.
Considérer ce type de code:
Créer la nouvelle classe:
La méthode statique peut être directement placé dans le
SingleResponsibilityClass
par l'utilisation d'Eclipse estRefactor
>Move...
refactoring comme décrit par Prabhakaran:Pour la méthode d'instance, le processus est un peu plus complexe. Lire ci-dessous.
Extraire une méthode de
someInstanceMethodToMove()
et laissez-les nom, ilsomeInstanceMethodToMove2()
:Utiliser le
SingleResponsibilityClass
dans la méthode originale:Remarque: il est important que
SingleResponsibilityClass
est un paramètre de la méthode d'instance pour se déplacer, sinon Eclipse ne pas bouger de ce type.À partir de là, cliquez-droit sur
someInstanceMethodToMove2()
, et sélectionnezRefactor
>Move...
, sélectionnez SingleResponsibilityClass type dans l'assistant, puis appliquer:Puis cliquez droit sur
SingleResponsibilityClass
'someInstanceMethodToMove2()
méthode etRefactor
>Rename
àsomeInstanceMethodToMove()
:public class GodClass {
public someInstanceMethodToMove() {
nouveau SingleResponsibilityClass().someInstanceMethodToMove();
}
Puis cliquez droit sur
GodClass
'someInstanceMethodToMove()
méthode etRefactor
>Inline
:OriginalL'auteur JnRouvignac
Si vous utilisez l'un de la norme Ide (par exemple,
Eclipse
ouIntelliJ IDEA
), ils ont tous une simple option de menu pour le faire (en fonction de la façon dont le code est organisé).Si vous allez à chaque méthode et cliquez-droit sur son nom, le menu a un "Refactor" option, ce qui conduit à un "Déplacement" de l'option. Sélectionnez et suivez les instructions.
Ci-dessus est particulièrement facile pour les méthodes statiques. Pour les non-statique, vous devrez peut-être faire de sous-classement, ou de passer des références à des objets appropriés autour. De même, le "Refactor -> Move" est un bon début.
La classe cible doit être accessible de l'intérieur de la méthode pour être déplacé et se conformer à de nombreuses règles (par exemple, de ne pas appeler le mot-clé super). Il est difficile de deviner ce que votre code ressemble. Si c'est tout en 1 classe, créer les classes de cibles, de déclarer quelques variables muettes de ces classes dans la classe d'origine et essayer de le Refactor -> Move chemin nouveau.
J'ai essayé.. méthode s'est déplacé, mais les références ne l'a pas... Par exemple.... Class1 a la méthode abc() pour être déplacé à Class2. Maintenant, la méthode déplacé, mais class3 qui a été à l'aide de cette méthode est encore de l'utiliser comme class1Obj.abc() et ne pas class2obj.abc().
OriginalL'auteur PNS
a-t-elle tout de votre satisfaction
OriginalL'auteur Hussain Akhtar Wahid 'Ghouri'
C'est tout ce dont vous avez besoin. Il peut ne pas être tout à fait aussi simple que cela, parce que dans les étapes 1 et 2, vous devrez peut-être ajouter des arguments et/ou faire de la méthode statique, mais c'est l'essence même de la façon de le faire.
OriginalL'auteur Carl Manaster