Question

J'ai un tas de classes je veux renommer.Certains d'entre eux ont des noms qui sont de petite taille et que le nom est réutilisé dans d'autres noms de classe, où je ne veux pas que le nom a été changé.Les plus de cette vie dans le code Python, mais nous avons aussi quelques code XML qui fait référence à des noms de classe.

Recherche Simple et les remplacer ne reçoit que de moi, si loin.Dans mon cas, je veux renommer AdminAction à AdminActionPlug et AdminActionLogger à AdminActionLoggerPlug, donc le premier de la recherche et de remplacement serait aussi frapper le deuxième, à tort.

Quelqu'un a une expérience avec Python refactoring ?Les points de Bonus si ils peuvent résoudre les noms de classes dans les documents XML trop.

Était-ce utile?

La solution

En attendant, je l'ai essayé deux outils qui ont une certaine forme d'intégration avec vim.

La première est Corde, un python de refactoring de la bibliothèque qui vient avec un Vim (et emacs) plug-in.Je l'ai essayé pendant quelques renomme, et qui certainement a fonctionné comme prévu.Il m'a permis de prévisualiser le refactoring comme un diff, ce qui est agréable.C'est un peu le texte, mais c'est bien pour moi, prend juste plus de temps pour apprendre.

La deuxième est Réparation De Vélo Homme qui, j'imagine, gagne des points sur le nom.Aussi les bouchons dans vim et emacs.N'avez pas beaucoup joué avec elle encore, mais je me souviens avoir essayé il y a longtemps.

N'ai pas joué avec les deux encore assez, ou essayé plusieurs types de refactoring, mais je vais faire un peu plus de piratage avec eux.

Autres conseils

Je les recommande vivement PyCharm - pas seulement pour les refactorings.Depuis la première PyCharm réponse a été posté ici il y a quelques années la prise en charge du refactoring dans PyCharm s'est améliorée de manière significative.

Python Refactorings disponible dans PyCharm (dernière vérification 2016/07/27 dans PyCharm 2016.2)

  • Changement De Signature
  • Convertir Paquet Python/Module
  • Copie
  • Extrait De Refactorings
  • Inline
  • Inverser Boolean
  • Faire Fonction De Premier Niveau
  • Déplacer Les Refactorings
  • Pousser les Membres down
  • Tirez l'un des Membres du
  • Renommer Les Refactorings
  • Coffre-Fort Supprimer

XML refactorings (j'ai vérifié dans le menu contextuel dans un fichier XML):

  • Renommer
  • Déplacer
  • Copie
  • Extraire une sous-Requête en tant que CTE
  • Inline

Javascript refactorings:

  • Extrait de Paramètre en JavaScript
  • Changement de Signature en JavaScript
  • Extrait Variable en JavaScript

WingIDE 4.0 (WingIDE est mon python IDE de choix) prendra en charge un peu de refactorings, mais j'ai juste essayé la dernière version bêta, beta6, et...il y a encore du travail à faire.Rétracter Méthode fonctionne très bien, mais Renommer le Symbole n'est pas.

Mise à jour:La version 4.0 a corrigé toutes les refactoring.Ils fonctionnent très bien maintenant.

Votre IDE peuvent soutenir les refactorings !!Vérifier Eric, Eclipse, WingIDE ont construit dans les outils pour les refactorings (Renommer, y compris).Et qui sont très sûrs refactorings - si quelque chose peut aller mal IDE l'habitude de faire réf.

Pensez également à ajouter quelques unité de test pour s'assurer que votre code n'a pas souffert au cours de refactorings.

PyCharm ont certaines fonctionnalités de refactoring.

PYTHON REFACTORING

Renommer refactoring permet d'effectuer des modifications de code en toute sécurité et rapidement.Les changements locaux au sein d'un fichier sont effectuées sur place.Refactorings de travail dans la plaine de Python et Django projets.

Utilisation Introduire Une Variable De Champ//Constante et Inline Local pour l'amélioration de la structure du code à l'intérieur d'une méthode, Extrait De La Méthode à casser plus les méthodes, les Extrait De La Superclasse, Push Up, Tirer Vers Le Bas et Déplacer pour déplacer les méthodes et les classes.

Je voudrais prendre un coup d'oeil à Melon (https://pybowler.io).

Il est mieux adapté pour une utilisation directement à partir de la ligne de commande de corde et encourage la création de scripts (on-off scripts).

Vous pouvez utiliser sed pour effectuer cette.L'astuce est de se rappeler que les expressions régulières peuvent reconnaître les limites des mots.Cela fonctionne sur toutes les plates-formes à condition que vous obtenez les outils, qui sur Windows Cygwin, Mac OS peut exiger d'installer les outils de dev, je ne suis pas sûr, et Linux a ce sortir de la boîte.Donc, grep, xargs, et sed devrait faire l'affaire, après 12 heures de lecture des pages de man et d'essai et d'erreur ;)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top