2009-04-24 6 views
10

Cuando busco en el código de Python heredado y escribo el código de Python, a menudo uso pylint. También estoy usando Clone Digger. Recientemente comencé a usar rope, que es una biblioteca para la refactorización automatizada.Herramienta de Python que sugiere refactorizaciones

Pero estoy buscando algo más que una soga. Preferiría una herramienta que simplemente haga sugerencias sobre posibles refactorizaciones: nombra la refactorización, opcionalmente proporciona una breve descripción de ella (ideal para fines de aprendizaje), resalta la sección de códigos y me permite hacer la refactorización yo mismo. ¿Hay tal herramienta?

+0

Para fines de aprendizaje, recomendaría http://www.refactoring.com/ o el libro real de Martin Fowler, no conozco ninguna herramienta que funcione exactamente como usted describió :( – Ryan

+0

Tiene un ejemplo concreto del tipo de herramienta que está buscando, que ya existe para Python u otro lenguaje de programación? – bignose

+0

Tanto pylint como Clone Digger sugieren algunos lugares problemáticos al señalar problemas específicos en el código, pero no sugieren refactorizaciones – Anonymous

Respuesta

2

Salida bicicleta hombre de reparación http://bicyclerepair.sourceforge.net/

¿Cuál es la reparación de bicicletas hombre? El proyecto Bicycle Repair Man es un intento de crear una funcionalidad de navegador de refactorización para python. Está empaquetado como una biblioteca que se puede agregar a IDEs y editores para proporcionar capacidades de refactorización. Los enlaces para Emacs y Vi están incluidos con el paquete.

Nunca lo he usado, pero he leído sobre él. Suena como lo que estás buscando.

+2

BicycleRepairMan es como una cuerda, pero es más viejo y tiene menos características que la cuerda. No es lo que estoy buscando. He usado BRM en el pasado. No lo mencioné en mi pregunta porque la cuerda lo reemplazó. – Anonymous

0

NetBeans tiene una versión de acceso anticipado que admite Python, y es bastante agradable. Tiene algunas herramientas básicas de refactorización que encontré útiles. Como beneficio adicional, funciona en Windows, Linux, Mac OS X y Solaris.

Compruebe hacia fuera en: http://www.netbeans.org/features/python/

+1

I no vea nada en la referencia que da que sugiera que hace lo que la pregunta requiere: dar sugerencias al programa en cuanto a * qué * refactorizaciones realizar, en qué punto específico de su código. – bignose

1

yo no, si ese tipo de herramienta existe en cualquier lengua específica, aunque el concepto fue mencionado en el libro de Martin Fowler refactorización (web reference).

La mejor herramienta que conozco que existe actualmente es la complejidad ciclomática. This article implementa un contador de complejidad ciclomática para python.

La otra métrica fácil de apuntar es la longitud del método/función, el número de atributos de los objetos/clases y el número de parámetros de las funciones, si no recuerdo, la lista ya contó esos.

+0

La complejidad de Cyclomatic no es una herramienta, es una métrica de código. –

2

Oh Olvídese de su herramienta, en su lugar use TDD y un buen libro como refactorización para diseñar patrones de Kerievsky. El problema es que la refactorización es una forma de mejorar su código y diseño, pero solo Usted puede saber lo que quiere lograr, ninguna herramienta de refactorización puede hacerlo por usted.

Mi punto es que la mejor forma de aprender a refactorizar es estudiar ejemplos, no seguir algunas herramientas estúpidas/simples, porque no te enseñarán ninguna refacturación sofisticada ni te dirán si tienes una refactorización que comprenda bien con tu código .

PS Read Fowler "Refactoring" y Kerievsky "Refactorización para diseñar patrones" Estos libros son obligatorios al aprender a refactorizar. Y mencionan una forma simple de verificar si se necesita refactorización (olores).

Considere también TDD como una buena forma de asegurarse de que sus referencias sean seguras y no rompan su código. Beck "Desarrollo basado en pruebas por ejemplo" es un buen libro para comenzar. Y Python tiene PyUnit para TDD.

2

Puede que le guste Pythoscope, un generador de prueba de unidad de Python automático, que se supone le ayudará a arrancar un conjunto de pruebas de unidad ejecutando código dinámicamente.

Además, ¿ha comprobado el módulo rope.contrib.codeassist? Se supone que debe proponer automáticamente y realizar refactorizaciones de su código fuente por usted.

Cuestiones relacionadas