
Έχω ένα σωρό κατηγορίες που θέλετε να μετονομάσετε. Ορισμένα από αυτά έχουν ονόματα που είναι μικρές και ότι το όνομά επαναχρησιμοποιείται σε άλλα ονόματα κατηγορία, όπου δεν θέλω αυτό το όνομα άλλαξε. Τα περισσότερα από αυτή ζει στον κώδικα Python, αλλά έχουμε και κάποιο κώδικα XML που αναφέρεται σε ονόματα τάξη.


Απλή αναζήτηση και αντικατάσταση μου παίρνει μόνο μέχρι τώρα. Στην περίπτωσή μου, θέλω να μετονομάσετε AdminAction να AdminActionPlug και AdminActionLogger να AdminActionLoggerPlug, έτσι αναζήτησης και αντικατάστασης του πρώτου κάποιου θα χτυπήσει και το δεύτερο, κακώς.


Υπάρχει κάποιος που έχει εμπειρία με Python εργαλεία refactoring; Bonus πόντοι αν μπορούν να καθορίσουν τα ονόματα τάξη στα έγγραφα XML πάρα πολύ.

 
Τι εργαλεία refactoring χρησιμοποιείτε για την Python;
======================================================



Εν τω μεταξύ, έχω δοκιμάσει δύο εργαλεία που έχουν κάποιο είδος της ολοκλήρωσης με vim.


Το πρώτο είναι [σχοινί](https://github.com/python-rope/rope) , μια βιβλιοθήκη refactoring Python που έρχεται με ένα Vim (και emacs) plug-in. Το δοκίμασα για μερικές μετονομασίες, και ότι σίγουρα λειτούργησε όπως αναμενόταν. Αυτό μου επέτρεψε να δείτε το refactoring ως diff, το οποίο είναι ωραίο. Είναι ένα κομμάτι κειμένου με γνώμονα, αλλά αυτό είναι εντάξει για μένα, απλά χρειάζεται περισσότερο χρόνο για να μάθουν.


Το δεύτερο είναι η [επισκευή ποδηλάτων άνθρωπος](http://bicyclerepair.sourceforge.net/) που υποθέτω ότι κερδίζει πόντους στο όνομα. Επίσης συνδέεται σε vim και emacs. Δεν έχουν παίξει πολύ με αυτό ακόμα, αλλά θυμάμαι ότι προσπαθεί εδώ και πολύ καιρό.


Δεν έχουν παίξει τόσο με αρκετά ακόμα, ή προσπάθησαν περισσότερα είδη refactoring, αλλά εγώ θα κάνω λίγο περισσότερο hacking μαζί τους.

 

IDE σας μπορεί να υποστηρίξει refactorings !! Δείτε το Eric, Eclipse, WingIDE έχουν κατασκευάσει εργαλεία για refactorings (Μετονομασία συμπεριλαμβανομένου). Και αυτό είναι πολύ ασφαλή refactorings - αν κάτι μπορεί να πάει στραβά IDE συνηθίζει να κάνει διαιτητή.


Επίσης, μπορείτε να προσθέσετε μερικές δοκιμή μονάδα για να εξασφαλίσει τον κωδικό σας δεν υπέστη κατά τη διάρκεια της refactorings.

 

WingIDE 4.0 (WingIDE είναι python μου IDE της επιλογής) θα υποστηρίξει μερικές refactorings, αλλά εγώ απλά προσπάθησα από την τελευταία beta, beta6, και ... υπάρχει ακόμα δουλειά να γίνει. Επαναφοράς μέθοδος λειτουργεί πολύ καλά, αλλά Μετονομασία Σύμβολο δεν το κάνει.


Ενημέρωση: Η απελευθέρωση 4.0 έχει καθορίσει όλα τα εργαλεία refactoring. Δουλεύουν πολύ τώρα.

 

Μπορείτε να χρησιμοποιήσετε το sed για να εκτελέσει αυτό. Το κόλπο είναι να υπενθυμίσει ότι η τακτική εκφράσεις μπορεί να αναγνωρίσει τα όρια λέξεων. Αυτό λειτουργεί σε όλες τις πλατφόρμες την προϋπόθεση ότι θα πάρετε τα εργαλεία, τα οποία για Windows είναι Cygwin, το Mac OS μπορεί να απαιτεί την εγκατάσταση των εργαλείων dev, δεν είμαι σίγουρος, και το Linux έχει αυτό έξω από το κουτί. Έτσι, grep, xargs και sed πρέπει να κάνει το κόλπο, μετά από 12 ώρες διαβάζοντας σελίδες man και δοκιμή και το λάθος?)

 

[PyCharm](http://www.jetbrains.com/pycharm/features/) έχουν κάποια χαρακτηριστικά refactoring.



> 
> ### PYTHON refactoring
> 
> 
> **Μετονομασία** refactoring επιτρέπει να εκτελέσετε παγκόσμιες αλλαγές κώδικα με ασφάλεια και άμεσα. Οι τοπικές αλλαγές σε ένα αρχείο που εκτελούνται επί τόπου. Refactorings εργάζονται σε απλά προγράμματα Python και Django.
> 
> 
> Χρησιμοποιήστε **Εισαγωγή Μεταβλητό / Πεδίο / Συνεχής** και **Inline Τοπικές** για τη βελτίωση της δομής κώδικα μέσα σε μια μέθοδο, **Απόσπασμα μέθοδος** για να διαλύσει πλέον μεθόδους, **Απόσπασμα Υπερκλάση** , **Push Up** , **τραβήξτε προς τα κάτω** και **Μετακίνηση** για να μετακινήσετε τις μεθόδους και τις κατηγορίες.
> 
> 
> 

 

Θα ήθελα να συστήσω ανεπιφύλακτα [PyCharm](https://www.jetbrains.com/pycharm/) - όχι μόνο για refactorings. Δεδομένου ότι η πρώτη απάντηση PyCharm δημοσιεύτηκε εδώ πριν από μερικά χρόνια η refactoring υποστήριξη PyCharm έχει βελτιωθεί σημαντικά.


[Refactorings Python διατίθεται σε PyCharm](https://www.jetbrains.com/pycharm/webhelp/refactoring-source-code.html) (τελευταία ελέγχεται 27/07/2016 σε PyCharm 2016.2)


* Αλλαγή Υπογραφή
* Μετατροπή σε Python πακέτο / Ενότητα
* αντίγραφο
* refactorings απόσπασμα
* Στη γραμμή
* Αντιστροφή Boolean
* Κάντε Λειτουργία Top-Level
* refactorings Μετακίνηση
* Πιέστε προς τα κάτω Μέλη
* Τραβήξτε προς τα Μέλη up
* Μετονομασία refactorings
* Ασφαλής Διαγραφή


refactorings XML (έλεγξα στο μενού περιβάλλοντος σε ένα αρχείο XML):


* Μετονομάζω
* Κίνηση
* αντίγραφο
* Εκχυλίζουμε υποερώτημα ως CTE
* Στη γραμμή


Javascript refactorings:


* Απόσπασμα παραμέτρων σε JavaScript
* Αλλαγή Υπογραφή σε JavaScript
* Απόσπασμα Μεταβλητό σε JavaScript

 

Θα ήθελα να ρίξετε μια ματιά στο *Bowler* ( <https://pybowler.io> ).


Είναι καταλληλότερο για χρήση απ 'ευθείας από τη γραμμή εντολών από σχοινί και ενθαρρύνει scripting (εφάπαξ σενάρια).

 