2009-04-24 10 views
10

Quando si scava nel codice Python precedente e si scrive codice Python, spesso uso pylint. Sto anche usando Clone Digger. Recentemente ho iniziato a utilizzare rope, che è una libreria per il refactoring automatico.Strumento Python che suggerisce i refactoring

Ma io sto cercando qualcos'altro che la corda. Preferirei uno strumento che fornisse solo suggerimenti su possibili refactoring: nomina il refactoring, opzionalmente fornisce una breve descrizione di esso (ottimo per scopi di apprendimento), evidenzia la sezione del codice e mi consente di eseguire personalmente il refactoring. C'è un tale strumento?

+0

Per motivi di apprendimento, consiglierei sia http://www.refactoring.com/ che il vero libro di Martin Fowler, non conosco alcuno strumento che funzioni esattamente come hai descritto :( – Ryan

+0

Hai un esempio concreto del tipo di strumento che stai cercando, che esiste già per Python o un altro linguaggio di programmazione? – bignose

+0

Sia pylint che Clone Digger suggeriscono alcuni punti problematici facendo riferimento a problemi specifici nel codice, ma non suggeriscono i refactoring stessi – Anonymous

risposta

2

Partenza bicicletta uomo di riparazione http://bicyclerepair.sourceforge.net/

Qual è la riparazione della bicicletta Man? Il progetto Bicycle Repair Man è un tentativo di creare funzionalità di refactoring del browser per python. È impacchettato come una libreria che può essere aggiunta agli IDE e ai redattori per fornire funzionalità di refactoring. I binding per Emacs e Vi sono inclusi nel pacchetto.

Mai usato da solo, ma ne ho letto. Sembra quello che stai cercando.

+2

BicycleRepairMan è come una corda, ma è più vecchio e ha meno funzioni della corda, non è quello che sto cercando.Ho utilizzato BRM in passato.Non ho parlato nella mia domanda perché la corda l'ha sostituita – Anonymous

0

NetBeans ha una versione di accesso iniziale che supporta Python ed è piuttosto carina. Ha alcuni strumenti di refactoring di base che ho trovato utile. Come bonus aggiuntivo funziona su Windows, Linux, Mac OS X e Solaris.

Check it out a: http://www.netbeans.org/features/python/

+1

I non vedi nulla al riferimento che dai che suggerirebbe fa ciò che la domanda richiede: dare suggerimenti al programma per quanto riguarda * quali * i refactoring da eseguire, in quale punto specifico del loro codice. – bignose

1

io non se quel tipo di strumento esiste in qualunque lingua specifica, anche se il concetto è stato menzionato nel libro refactoring di Martin Fowler (web reference).

Il miglior strumento che conosca attualmente esiste è la complessità ciclomatica. This article implementa un contatore di complessità ciclomatica per python.

L'altra facile metrica di destinazione è la lunghezza del metodo/della funzione, il numero di attributi di oggetti/classi e il numero di parametri per le funzioni, se ricordo, la stampante ha già contato quelli.

+0

La complessità ciclomatica non è uno strumento, è una metrica del codice. –

2

Oh dimentica il tuo strumento, usa invece TDD e un buon libro come il refactoring per disegnare modelli di Kerievsky. Il problema è che il refactoring è un modo per migliorare il codice e il design, ma solo tu puoi sapere cosa vuoi ottenere, nessuno strumento di refactoring può farlo per te. Il mio punto è che il modo migliore per imparare il refactoring è studiare degli esempi, non seguire alcuni strumenti stupidi/semplici, perché non ti insegnano alcun refactoring sofisticato né ti diranno se hai un refactoring che si componga bene con il tuo codice. .

PS Leggi Fowler "Refactoring" e Kerievsky "Refactoring per progettare i pattern" Questi libri devono essere letti durante l'apprendimento del refactoring. E menzionano il modo semplice per verificare se è necessario il refactoring (odori).

Inoltre considera TDD come un buon modo per garantire che i tuoi refs siano sicuri e non infrangano il tuo codice. Beck "Test-Driven Development by example" è un buon libro con cui iniziare. E Python ha PyUnit per TDD.

2

Potrebbe piacerti Pythoscope, un generatore di test di unità Python automatico, che dovrebbe aiutare a eseguire il bootstrap di una suite di test di unità eseguendo dinamicamente il codice.

Inoltre, hai verificato il modulo rope.contrib.codeassist? Si suppone che proponga e faccia automaticamente dei refactoring del tuo codice sorgente per te.

Problemi correlati