Principio de Responsabilidad Única
SOLID es un acrónimo que representa cinco principios que tiene como meta hacer el diseño de software entendible, flexible y mantenible. LA “S” es para Single Responsibility Principle o mejor conocido como Principio de Responsabilidad Única. Este principio dicta que una clase solo debe de tener una sola responsabilidad sobre una parte de la funcionalidad de un software.
El principio es importante porque la clase al solo tener que concentrarse en una sola responsabilidad permite una implementación sencilla, más fácil de entender, y previene cualquier daño colateral al momento de hacer un cambio. Cabe destacar que este principio no dice que solo se debe hacer una sola acción en una clase, sino que los métodos dentro de esa clase tengan una cohesión hacia esa responsabilidad a ejecutar. Es importante saber cuando es necesario usar este principio. Un ejemplo es cuando estás describiendo una clase que hace crea algo Y también manda confirmación de algo diferente.
Viendo este ejemplo de la clase de Factura, vemos que está clase tiene dos responsabilidades ya que crea el recibo Y manda un correo de confirmación. Esto no significa que el código vaya a fallar. Mas bien si vemos las pruebas, podemos ver que las dos están pasando.
El problema es que el principio de responsabilidad única se está violando ya que esa clase tiene dos responsabilidades. Lo ideal es dejar que la clase Factura tenga la sola responsabilidad de crear el recibo y que en una clase llamada Correo esté la responsabilidad de mandar ese email de confirmación.
Ahora ya que se hicieron los cambios recomendados, podemos ver que al momento de correr los tests las clases se encargan de una sola responsabilidad.
Otro principio que cubre SOLID es Dependency Inversion Principle o mejor conocido como Principio de Inversión de Dependencias.