Principio de responsabilidad única en SOLID
Clase 2 de 27 • Curso de Patrones de Diseño y SOLID en Python
Contenido del curso
Principios SOLID
- 2

Principio de responsabilidad única en SOLID
Viendo ahora - 3

Refactorizando código Python con principios SOLID
11:14 min - 4

Cómo aplicar SRP en un procesador de pagos con Stripe
25:19 min - 5

Open Closed Principle: extensión sin modificación
02:39 min - 6

Cómo usar clases abstractas en Python
14:46 min - 7

Principio de Liskov en S.O.L.I.D.
03:18 min - 8

Principio de sustitución de Liskov en Python
06:38 min - 9

Interface Segregation: cuándo separar contratos
02:33 min - 10

Segregación de interfaces en procesadores de pagos
09:05 min - 11

Principio de inversión de dependencias explicado
04:13 min - 12

Principio de inversión de dependencias: servicio de pagos flexible
05:56 min
Reestructuración del proyecto
Patrones de Diseño
- 14

Qué son los patrones de diseño: definición y categorías
03:54 min - 15

Strategy Pattern con Python y setprocessor
01:55 min - 16

Strategy Pattern para pagos en Python
10:58 min - 17

Factory Pattern: centralizar creación de objetos
03:05 min - 18

Patrón Factory para procesar pagos con match
11:06 min - 19

Patrón Decorator en 5 pasos para funcionalidad dinámica
03:06 min - 20

Patrón decorador en servicios de pagos
12:57 min - 21

Builder Pattern: construcción paso a paso
01:28 min - 22

Builder pattern para servicios de pagos
18:55 min - 23

Observer Pattern en sistemas de eventos
01:48 min - 24

Observer en sistemas de pagos con Python
11:11 min - 25

Chain of Responsibility para validar pagos
02:04 min - 26

Chain of Responsibility en servicios de pagos
16:27 min - 27

Arquitectura robusta para procesadores de pago
03:19 min
Aplicar el principio de responsabilidad única fortalece el diseño del software desde la base. Con foco en claridad y orden, este enfoque, propuesto por Robert C. Martin, ayuda a escribir código más fácil de mantener, probar y escalar, evitando efectos secundarios innecesarios y costos de cambio altos.
¿Qué es el principio de responsabilidad única y cómo se define?
El SRP establece que una clase debe tener una y solo una razón para cambiar. También puede extrapolarse a funciones: cada componente debe tener una responsabilidad única.
- Definición formal según Robert C. Martin: una sola razón para cambiar.
- Aplicación práctica: separar responsabilidades en clases o funciones pequeñas.
- Efecto directo: menos áreas del sistema impactadas por una modificación.
¿Por qué concentrar una sola responsabilidad?
Porque cuando una clase o función hace “demasiado”, el código se desordena. Aparecen múltiples razones para cambiar y, por tanto, más riesgo y costo.
- Código con muchas responsabilidades: difícil de entender y de modificar.
- Una responsabilidad única: cambios focalizados y predecibles.
¿Cómo se relaciona con Single Responsibility Principle?
El término en inglés, Single Responsibility Principle, resume la idea central: cada pieza del sistema debe encargarse de una sola cosa.
¿Qué beneficios ofrece: mantenibilidad, reusabilidad y escalabilidad?
Separar responsabilidades trae ventajas claras en el ciclo de vida del software. Cuando el diseño es claro, es más simple evolucionar el sistema sin romper otras partes.
- Mantenibilidad: menos desorden, menor costo de modificación y corrección de bugs.
- Reusabilidad: componentes pequeños y específicos se pueden usar en múltiples contextos.
- Pruebas unitarias: preparar escenarios es más simple cuando cada función hace una sola cosa.
- Escalabilidad del sistema: crecer sin efectos secundarios inesperados.
- Menor complejidad: cada parte es más simple de razonar y cambiar.
¿Cómo impacta en pruebas unitarias?
Las pruebas unitarias son un pilar del desarrollo de software. Con SRP, probar es más directo.
- Preparación sencilla: menos dependencias y configuraciones.
- Validación enfocada: se prueba comportamiento específico.
- Ciclo de desarrollo más rápido: errores detectados antes, con menos fricción.
¿Qué pasa con cohesión y acoplamiento?
Una máxima del diseño indica: aumentar la cohesión y disminuir el acoplamiento.
- SRP aumenta la cohesión: cada clase o función tiene un propósito claro.
- SRP disminuye el acoplamiento: menos dependencias entre partes del sistema.
¿Cómo reconocer cuándo aplicar SRP en tu código?
Hay señales claras que indican que una clase o función asume demasiado. Identificarlas a tiempo evita costos y bloqueos futuros.
- Varias razones para cambiar: múltiples motivos de modificación en una misma pieza.
- Cambios de contexto: la lógica salta entre responsabilidades distintas.
- Alta complejidad y difícil mantenimiento: agregar un feature o arreglar un error resulta costoso.
- Dificultad para realizar pruebas unitarias: demasiada preparación alrededor de la función que se quiere probar.
- Duplicación del código: la misma validación o comportamiento repetido en varios lugares.
¿Qué hacer ante duplicación de responsabilidades?
Extraer y centralizar.
- Mover la lógica repetida a una función única.
- Reutilizar esa función donde se requiera el mismo comportamiento.
- Reducir errores al tener una sola fuente de verdad.
¿Cómo actuar cuando hay múltiples responsabilidades?
Dividir y delimitar.
- Identificar qué hace cada segmento de la clase o función.
- Separar en componentes con responsabilidades únicas.
- Aislar efectos secundarios y facilitar pruebas.
Comparte en comentarios: ¿en qué partes de tu código aplicarías el principio de responsabilidad única? Si ya lo usaste, ¿cómo lo implementaste y qué resultados obtuviste?