The talking bit

A blog about programming, mainly PHP, and maybe other things


Project maintained by franiglesias Hosted on GitHub Pages — Theme by mattgraham

99 bottles of OOP. Sandi Metz.

por Fran Iglesias

Otro libro imprescindible de Sandi Metz, que puedes conseguir en versiones para ruby, php y javascript.

99 bottles es una canción en inglés similar a nuestra Un elefante se balanceaba, en las que el mismo verso se repite cambiando el número en cuenta atrás o adelante. Esta canción le sirve a Sandi Metz para explicar el proceso de desarrollo orientado a objetos de una forma completísima, abordando todos los puntos clave.

El proyecto que desarrolla a lo largo del libro consiste en crear una API capaz de generar la canción completa o versos específicos. Para ello, empieza presentando cuatro propuestas que representan formas diferentes de escribir software, analizando su complejidad y su flexibilidad para el cambio.

Esto le sirve para introducir el concepto de complejidad del software y cómo medirla adecuadamente para valorar las cuatro propuestas y cuál de ellas es el mejor punto de partida para introducir nuevos requisitos en el proyecto.

Utilizando TDD y diferentes técnicas de refactor, Metz nos va llevando de la mano para aprender a encontrar las abstracciones adecuadas en el momento oportuno. Poco a poco, con la ayuda de distintos principios de diseño, el código va evolucionando de una solución tosca y obvia, a una cada vez más general y sofisticada que, sin embargo, es completamente flexible y abierta al cambio futuro.

Los distintos capítulos están escritos con claridad y sencillez, pero sin renunciar al rigor y a la precisión. Es un libro práctico y, a la vez, es muy profundo en el plano teórico.

Lo recomendaría muy por delante de otros como “Clean Code”. No sólo es un libro más amigable, sino que la aparente sencillez de su proyecto ejemplo, nos ayuda a entender que no hay código, por simple que nos parezca, que no pueda verse afectado de inflexibilidad y que no pueda mejorar su expresividad y su capacidad de evolucionar en el futuro.

También nos ayuda a adoptar una metodología iterativa. Metz propone pequeños cambios que nos van ayudando a despejar el código y descubrir conceptos sin bloquear en ningún momento la funcionalidad del software. Cada pequeño cambio podría desplegarse en producción sin afectar lo más mínimo al comportamiento. Pero es que además, al final del libro, el sistema puede generar letras para cualquier canción del estilo con un esfuerzo mínimo.

En resumen. Un libro que tienes que leer sí o sí, y que probablemente releerás cada cierto tiempo.

Además, al comprarlo obtienes todas las posibles versiones para diferentes lenguajes de programación (e incluso si prefieres que las botellas sean de leche o de cerveza).

Temas

good-practices php testing blogtober19 refactoring design-principles tdd legacy python misc design-patterns bdd tools tips ddd bbdd soft-skills ruby javascript books api sql ethics swift