Saltar a contenido

You aren't gonna need it

El principio YAGNI (You Ain't Gonna Need It) es un principio de desarrollo de software que se refiere a la idea de que no se debe agregar funcionalidad que no se necesita actualmente en el código. En otras palabras, no se deben agregar características o funcionalidades en el código que no son necesarias para resolver el problema actual, sino que se deben agregar solo cuando sean necesarias en el futuro.

Este principio es importante porque puede ayudar a evitar la sobreingeniería, el código innecesariamente complejo y la duplicación de código. Si se agrega una funcionalidad que no se necesita actualmente, esto puede aumentar la complejidad del código y hacer que sea más difícil de entender y mantener. Además, si se agrega una funcionalidad que nunca se utiliza, esto es un desperdicio de tiempo y recursos.

En resumen, el principio YAGNI sugiere que se debe escribir código para resolver los problemas actuales y no agregar funcionalidades innecesarias que puedan complicar el código o crear problemas en el futuro.

En Resumen

El principio YAGNI (You Ain't Gonna Need It) se aplica al evitar agregar funcionalidades o características en el código que no son necesarias en el momento actual, sino que se piensan que podrían ser útiles en el futuro. Es decir, se debe evitar agregar código innecesario o complejidad en el diseño de la aplicación, enfocándose solamente en las funcionalidades actuales.

Para aplicar este principio en Java, se recomienda seguir los siguientes pasos:

  1. Enfocarse en implementar las funcionalidades requeridas por el usuario actualmente.

  2. No agregar funcionalidades que no se necesitan en el momento actual.

  3. Evitar agregar código redundante o complejo en el diseño de la aplicación.

  4. En caso de necesitar agregar nuevas funcionalidades, asegurarse de que son realmente necesarias y que no se están agregando solamente por especulación o suposiciones.

  5. Enfocarse en mantener un diseño simple y fácil de mantener en el tiempo.

Por ejemplo, en lugar de agregar métodos o clases que no se están utilizando actualmente, es mejor esperar a que realmente se necesiten para agregarlos al código. Además, se debe evitar agregar complejidad al diseño de la aplicación, como agregar múltiples capas de abstracción o patrones de diseño innecesarios, que solo aumentarán la complejidad del código y harán más difícil su mantenimiento en el futuro.

Ejemplo

Supongamos que estamos desarrollando una aplicación de tienda en línea y necesitamos implementar la funcionalidad de enviar un correo electrónico al cliente cuando se haya realizado una compra. Sin embargo, sabemos que en el futuro se podrían agregar otras funcionalidades de notificación como notificaciones push, mensajes de texto, etc.

Según el principio YAGNI, no debemos implementar estas funcionalidades adicionales desde el principio si no se necesitan en este momento, ya que esto agregará complejidad innecesaria a nuestro código y lo hará más difícil de mantener.

Entonces, en lugar de crear una clase para enviar notificaciones que incluya todos los métodos para enviar correos electrónicos, notificaciones push, mensajes de texto, etc., podríamos comenzar por crear una clase simple para enviar correos electrónicos. Algo como esto:

public class EmailNotificationService {

    public void sendEmail(String recipient, String subject, String body) {
        // código para enviar correo electrónico
    }
}

Con esta clase simple, podemos enviar correos electrónicos a los clientes cuando se realiza una compra en la tienda en línea. Si en el futuro se necesitan otras funcionalidades de notificación, podemos agregarlas en ese momento, sin tener que preocuparnos por el código innecesario que habíamos creado anteriormente.

En resumen, el principio YAGNI nos indica que no debemos agregar funcionalidades a nuestro código que no se necesitan actualmente, ya que esto agrega complejidad innecesaria y hace que nuestro código sea más difícil de mantener.