Lecturas recomendadas

Donde se exponen algunos libros, artículos y vídeos que pueden ser un buen recurso para aprender de autores más cualificados y prestigiosos que el de este libro, cosa que tampoco es tan difícil de encontrar.

Libros recomendados

Refactoring, de Martin Fowler y Kent Beck. Se trata de un libro de referencia. Es difícil de leer de un tirón porque buena parte de su contenido es un catálogo de técnicas, pero el capítulo sobre code smells es posiblemente el más iluminador de todos. Existen dos ediciones de este libro. En la primera, el refactoring era un concepto todavía en exploración y hay algunos apéndices en los que se trata esa cuestión. En la segunda edición, los ejemplos están en Javascript, lo que posiblemente los hace más accesibles.

Smells to Refactorings es un artículo de Joshua Kerievsky que, como su nombre indica, trata de los code smells y cómo refactorizarlos. Es un buen complemento al libro de Fowler y Beck.

Tidy First?: A Personal Exercise in Empirical Software Design de Kent Beck. Este libro es pequeño y se lee en un suspiro, pero te puede dejar pensando por meses. En él, Kent Beck explica formas de abordar el refactoring en un proyecto, a través de pequeños pasos inocuos que nos permiten ir mejorando el código sin miedo a romperlo. La última parte del libro la dedica a explicar el valor económico de la práctica de refactoring. En algunos sentidos, es un libro similar a este que tienes entre manos, pero lo ha escrito Kent Beck, así que es mucho mejor.

Five Lines of Code, de Christian Clausen. Soy consciente de que el prólogo por el inefable Robert C. Martin puede echar para atrás a más de una, pero el libro de Clausen merece una lectura. El autor propone una metodología de refactoring sencilla y progresiva. Parte de una serie de reglas, como la que da título al libro entre otras, para llevarnos de la mano aplicando distintos refactors seguros, por lo que no sería necesario disponer de tests. Con esto, nos ayuda a entender cuál es problema de ese código, por qué y cómo arreglarlo. Para ello nos propone un par de proyectos en TypeScript, lenguaje que toma elementos de otros muchos lenguajes, por lo que no es muy difícil realizar los ejercicios propuestos y llevarlos a tus propios proyectos.

99 bottles of OOP, de Sandi Metz, no es estrictamente un libro sobre refactoring porque su objetivo es enseñar diseño orientado a objetos. Sin embargo, plantea el proceso comenzando por un ejemplo procedural y nos guía en el camino de convertirlo en un programa orientado a objetos, paso a paso y sin romper la funcionalidad. Creo que el término que mejor encaja para eso es refactoring. Además, tienes una edición del libro para PHP, Ruby, JS y Python. Sandi Metz es una de mis autoras favoritas, así que recomiendo a ciegas cualquier cosa que publique, y sus charlas son fantásticas.

Blogs y otros recursos online

Refactoring.guru es un sitio web que, en parte, reproduce muchos elementos de los libros de M. Fowler, algo que en su día les llevó a ciertos problemas relacionados con la propiedad intelectual. El caso es que esta web nos presenta un catálogo de refactorings y code smells muy apañado, con numerosos ejemplos, explicaciones, esquemas e ideas. La verdad es que mola bastante.

The talking bit. El origen de este libro es mi blog personal, que está bastante lleno de contenido técnico relacionado sobre todo con testing, diseño de software y, por supuesto, refactoring. Y está en español, que de recursos en inglés estamos surtidas.

Vídeos

Workflows of refactoring es la charla de Martin Fowler en la que explica cuando se hace el refactoring. De visión obligada. Además, es cortita y muy al punto.

The real secret to refactoring siempre merece la pena seguir el material de David Farley.

Get a Whiff of This es una charla de Sandi Metz en la que explica los code smells y cómo refactorizarlos, partiendo del libro de Fowler.

Refactoring práctico The Talking Bit tiene un canal en Youtube, en el que voy poniendo, cuando me siento suficientemente inspirado y tengo silencio en casa, vídeos en los que explico procesos de refactoring, TDD, etc. Son un apoyo al material publicado en el blog porque en algún momento pensé que los artículos escritos no conseguían transmitir el proceso sobre el terreno. Como punto característico, no se trata precisamente de shorts, prácticamente son sesiones de live coding (a veces corto algún trocito o edito algún error), por lo que tienen una duración larga. Básicamente, soy yo haciendo ejercicios y pensando en voz alta.

Refactoring con calisthenics Esta es otra serie de vídeos en las que aplico las reglas de calistenia de Jeff Way como forma de dirigir el refactor de un código. En concreto de un ejemplo adaptado por Emily Bache, a partir de otro puesto por Fowler en el libro de Refactoring.