[Python-es] cuando parar con el refactoring

Arnau Sanchez pyarnau en gmail.com
Jue Jun 24 13:16:05 CEST 2010


On Wed, 23 Jun 2010 17:32:08 +0100 monoBOT wrote:

> Pero claro me encuentro en que si voy modificando y modificando el
> código el programa no avanza, supongo que llegan momentos en los que
> tienes que dar un golpe en la mesa y decir hasta aquí llegué (como
> cuando yo tuve que cambiar de xml a sql) pero también hay momentos en
> los que hay que ir a por la faena para poder llevar adelante el
> proyecto.

Planteas un tema interesante, aunque probablemente la cuestión no tenga
más guía que la experiencia (a parte de lo ya comentado de utilizar
control de versiones y testing). Como en todo escenario en que se busca
el "justo medio" (en este caso en el vasto espacio que media entre la
desidia y la desmesura), tienes ejemplos de lo negativo de ambos
extremos. 

En "Coders at work" se lamenta Simon Peyton Jones sobre la
imposibilidad de refactorizar código:

"The most depressing thing about life as a programmer, I think, is if
you’re faced with a chunk of code that either someone else wrote or,
worse still, you wrote yourself but you no longer dare to modify.
That’s depressing."

En el otro extremo es muy ilustrativo ese cuento de Balzac sobre un
pintor obsesionado con retocar su obra:

"Al acercarse percibieron, en una esquina del lienzo, el extremo de un
pie desnudo que salía de ese caos de colores, de tonalidades, de
matices indecisos, de aquella especie de bruma sin forma; un pie
delicioso, ¡un pie vivo! Quedaron petrificados de admiración ante ese
fragmento librado de una increíble, de una lenta y progresiva
destrucción. Aquel pie aparecía allí como el torso de alguna Venus de
mármol de Paros que surgiera entre los escombros de una ciudad
incendiada."

---

Personalmente aborrezco el dicho de "si funciona, no lo toques". Si no
"tocáramos" las cosas que "funcionan", seguiríamos en las cuevas.
Refactorizar es fundamental en el (interminable) proceso de
aprendizaje. Por ello, es recomendable tener varios proyectos propios (y
públicos) que puedas pulir sin las restricciones (de tiempo y
fiabilidad) que aplican al código que desarrollas para terceros.


Más información sobre la lista de distribución Python-es