Contenido del curso
Estructura de un Proyecto con MVVM
Operaciones CRUD en un proyecto con MVVM
- 11

Función addTodo con Core Data en SwiftUI
19:47 min - 12

Funcionalidades básicas para gestionar tareas en SwiftUI
14:30 min - 13

Listado y detalle de notas en SwiftUI
22:35 min - 14

Editar todos con SwiftUI y Core Data
13:41 min - 15

Archivar tareas en SwiftUI con Core Data
15:28 min - 16

Cómo desarchivar tareas con unarchiveTodo
03:25 min - 17

Eliminar un to do definitivamente con Core Data
04:15 min - 18

Marcar tareas completadas en SwiftUI
20:50 min - 19

Creación de Vistas Amigables en SwiftUI para Aplicaciones de Tareas
19:52 min
Clean Architecture
- 20

Qué es Clean Architecture y por qué supera a MVVM
05:52 min - 21

Estructura y Ventajas de la Clean Architecture
03:47 min - 22

Estructura de proyecto iOS con Clean Architecture
06:01 min - 23

Mapeo de JSON a structs Swift con Codable
09:10 min - 24

Capa de datos con Clean Architecture en Swift
30:54 min - 25

Casos de uso en la capa de dominio Swift
09:35 min - 26

Capa de presentación con MVVM en SwiftUI
15:37 min - 27

Navegación y detalle con Clean Architecture en SwiftUI
21:54 min
MVVM y Clean Architecture
Qué son los principios SOLID
Resumen
Los principios SOLID son cinco reglas de diseño en programación orientada a objetos que hacen tu código estable, flexible y fácil de mantener. Funcionan como las normas de construcción de una casa: aseguran que cada parte cumpla su función sin interferir con las demás. Si escribes software y quieres entender por qué tu código se vuelve frágil con el tiempo, aquí encontrarás la base.
La analogía es directa. Una casa bien construida es sólida, se remodela sin tumbar muros y cada espacio tiene un propósito claro. Lo mismo aplica al código que mantienes a largo plazo.
¿Qué es el principio de responsabilidad única?
La regla dice que cada clase debe tener solamente una razón para cambiar. Piensa en el electricista que va a tu casa: se ocupa de las conexiones eléctricas, no de plomería ni de pintura. Si algo falla, sabes exactamente a quién llamar.
Llevado al código, si tienes una clase que calcula impuestos y además genera facturas, divídela en dos. Una se encarga de los impuestos y otra de las facturas. Así, cuando cambien las reglas fiscales, no tocas la lógica de facturación.
¿Qué significa SRP en programación? Significa Single Responsibility Principle. Cada clase debe ocuparse de una sola tarea, de modo que solo exista una razón para modificarla.
¿Cómo funciona el principio abierto-cerrado y el de sustitución de Liskov?
Estos dos principios trabajan sobre cómo extiendes tu sistema sin romperlo.
Abierto para extensión, cerrado para modificación
Una clase debe poder ampliarse sin alterar su diseño original. La analogía es una casa modular: puedes agregar nuevas habitaciones sin derribar las paredes existentes.
En el código, si necesitas soportar un nuevo método de pago en tu aplicación, crea una nueva clase para manejarlo en lugar de modificar las clases que ya funcionan. Eso protege lo que ya está probado.
Sustitución de Liskov
Los objetos de una clase derivada deben poder sustituir a los de su clase base sin generar problemas. Si reemplazas un foco incandescente por uno LED, esperas que funcione igual, sin cambiar interruptores ni cableado.
En programación, si una subclase no respeta el comportamiento esperado de la clase padre, el sistema se rompe en lugares inesperados. Por eso herencia no es solo reutilizar código, es prometer un contrato.
¿Por qué importan la segregación de interfaces y la inversión de dependencias?
Los dos últimos principios SOLID definen cómo se conectan las piezas de tu software.
Segregación de interfaces
Una clase no debe estar obligada a implementar métodos que no usa. Imagina un control remoto universal con 50 botones cuando solo necesitas cinco. Es innecesario y confuso.
En el código, en lugar de exponer una interfaz gigante, divídela en varias más específicas. Cada clase implementa solo lo que realmente necesita.
Inversión de dependencias
Las clases de alto nivel no deben depender de las de bajo nivel. Ambas deben depender de abstracciones. Piensa en los enchufes de tu casa: usas adaptadores para conectar dispositivos de distintos voltajes sin rediseñar el sistema eléctrico.
En el código, esto se traduce en usar protocolos o interfaces en lugar de depender directamente de clases concretas. Cambias la implementación cuando quieras y el resto del sistema ni se entera.
¿Cuáles son los 5 principios SOLID? Responsabilidad única, abierto-cerrado, sustitución de Liskov, segregación de interfaces e inversión de dependencias. Cada uno ataca un problema distinto del diseño orientado a objetos.
¿Cómo aplicar SOLID en tus proyectos reales?
La clave está en revisar tu código con preguntas concretas. ¿Esta clase tiene más de una razón para cambiar? ¿Estoy modificando algo que ya funciona en lugar de extenderlo? ¿Mi subclase rompe expectativas? ¿Estoy obligando a alguien a implementar lo que no necesita? ¿Dependo de una implementación cuando podría depender de una abstracción?
Para que la práctica te quede clara, ten presente estos cinco chequeos:
- Una clase, una responsabilidad.
- Extiende, no modifiques.
- Las subclases respetan el contrato del padre.
- Interfaces pequeñas y específicas.
- Depende de abstracciones, no de clases concretas.
Después de aplicar estas reglas, tu código se siente distinto: más fácil de probar, de escalar y de leer cuando vuelves seis meses después.
¿Alguna vez aplicaste los principios SOLID en tus proyectos? ¿Te costó entenderlos al inicio? Te leo en los comentarios.