Los principios SOLID, ¡explicados!

Поділитися
Вставка
  • Опубліковано 11 лип 2024
  • Seguimos con la Programación Orientada a Objetos, ésta vez con los 5 principios más famosos, ¡SOLID!
    Si te gusta el contenido, échale un ojo a mi último vídeo!
    4 Habilidades que TODO PROGRAMADOR SENIOR Necesita
    • 4 HABILIDADES que IMPU...
    👾 Redes sociales 👾
    ► Twitter: / bettatech
    ► Instagram: / betta_tech
    ► Canal Secundario: / @forkdebettatech
    ► Slack: bit.ly/33gaDDM
    👨🏼‍🏫 MIS CURSOS 👨🏼‍🏫
    👽 Curso de iniciación a la programación con JavaScript:
    ► bit.ly/3kr4bTc
    👕 MERCHANDISING DEL CANAL:
    ► Tienda UA-cam: / bettatech
    ► Tienda Teespring: teespring.com/stores/bettatec...
    ⭐️ AFILIADOS ⭐️
    🎁 7% Descuento en HOSTINGER (Código BETTATECH)
    ► www.hostg.xyz/aff_c?offer_id=...
    🧠 Autocompletado con IA (Kite)
    ► www.kite.com/get-kite/?...
    🐾 MacPaw (CleanMyMacX):
    ► macpaw.audw.net/c/2523912/941...
    🎵 TODA la música es de EpidemicSound:
    ► www.epidemicsound.com/referra...
    ✉️ CONTACTO PROFESIONAL:
    ► Respuesta no garantizada:
    bettatechyt@gmail.com
    📚 LIBROS 📚
    Design Patterns
    ► amzn.to/39XuQlq
    Head First Design Patterns
    ► amzn.to/2uq6XUq
    Refactoring
    ► amzn.to/2SQnf2c
    Clean Architecture
    ► amzn.to/3bZVonJ
    Clean Code
    ► amzn.to/32WVKq3
    Introduction to Algorithms
    ► amzn.to/34SyVFP
    Cracking the Coding Interview
    ► amzn.to/2QkdwC6
  • Наука та технологія

КОМЕНТАРІ • 266

  • @Julio-wd2sk
    @Julio-wd2sk 4 роки тому +207

    No estoy muy de acuerdo con la definición que das del SRP, aunque entiendo de dónde viene la imprecisión ya que yo mismo la tuve. Realmente hay bastante confusión en cuanto al SRP. La verdadera naturaleza del SRP es que cada módulo de software de un sistema debe ser responsabilidad de un único stakeholder. Esto no se entiende mucho con la definición de stakeholder, pero sí con la de actor. El SRP realmente trata de hacer ver que si segregas un sistema creando límites basados en actores, obtienes un sistema más robusto en el que los cambios asociados a un área de negocio no afecten al resto. Es decir, es erróneo decir que el SRP funciona a nivel de función e incluso a nivel de clase, si no que lo hace a nivel de módulos o componentes de la arquitectura de software. Esto es un error muy común y se describe muy bien en la página 62 de Clean Architecture en la versión original en inglés, de Robert C. Martin. A pesar de ser el principio más conocido de los SOLID para mí es el más incomprendido. El propio DDD (Domain Driven Design), algo que abarca un campo de conocimiento relevante, nace de este concepto fundamental del SRP.

    • @BettaTech
      @BettaTech  4 роки тому +56

      Wow, gran comentario! Es una definición mucho más precisa del SRP. Aún así, no se puede generalizar la definición abstracta al nivel que sea? ya sea función, clase, módulo, o incluso servicio entendiéndolo como sistema?

    • @Julio-wd2sk
      @Julio-wd2sk 4 роки тому +37

      ​@@BettaTech En realidad no es generalizable, al menos como el propio autor lo ha concebido y él mismo así defiende que no se le dé ese uso. El principio de responsabilidad única habla sobre responsabilidad y la responsabilidad es una persona, o actor caso-de-uso. No es algo que el código haga. Una persona que quiere hacer un cambio en el código como el cambio de formato de la mantisa del valor de un informe, es código cuya responsabilidad recae en una determinada persona del negocio que requiere ese cambio. De hecho las responsabilidades en los organigramas de gestión, recaen de forma atómica en personas determinadas, esa responsabilidad no puede si quiera delegarse, únicamente puede delegarse la función de negocio que originalmente realiza la persona con dicha responsabilidad.
      Aquí Robert C. Martin relata en detalle el principio, es largo pero creo que merece la pena. Es algo que implica una reflexión más profunda que el simple hecho (perdóname la expresión), de extraer código duplicado o con un comportamiento excesivo de una función, que todos hacemos diariamente, pero no está relacionado directamente con este principio.
      ua-cam.com/video/Gt0M_OHKhQE/v-deo.html

    • @BettaTech
      @BettaTech  4 роки тому +61

      @@Julio-wd2sk He estado leyendo más sobre SRP concretamente, y creo que lo que dices se puede resumir con lo que dice Robert:
      "Gather together the things that change for the same reasons. Separate those things that change for different reasons."
      Hay muchísima bibliografia sobre SRP que no acaba de dar ese mensaje. Voy a pinnear tu comentario para que la gente lo vea. Gracias!

    • @Julio-wd2sk
      @Julio-wd2sk 4 роки тому +32

      @@BettaTech Sí, básicamente se puede resumir perfectamente con esa cita de Robert, pero a mí siempre se me ha hecho demasiado abstracta y probablemente sea la razón por la que la mayoría lo confundimos cuando lo aprendemos por primera vez. La aproximación con actores me parece más natural, aunque esa cita que pones es la que captura la esencia del principio en pocas palabras.

    • @CarlosTorres-qd2is
      @CarlosTorres-qd2is 4 роки тому +4

      Buen comentario.

  • @m3mbrillo_
    @m3mbrillo_ 4 роки тому +21

    como una persona me dijo cuando empezaba en este mundo, tenes que lograr codear de forma tal que lo leas y sientas que lees un libro.

  • @jalilburbara
    @jalilburbara 4 роки тому +1

    Excelente, me encanta haber encontrado tus vídeos me servirán mucho para repasar y enseñar a mis compañeros

  • @kamuishirou001
    @kamuishirou001 4 роки тому +7

    "Las herramientas nos han de ser funcionales, y tenemos que usarlas para algún propósito"...con eso ya seremos bastante mejores programadores. Muchisimas gracias!!!

  • @sebastianamayazabala1621
    @sebastianamayazabala1621 3 роки тому +4

    Cuando hablas de cada tema y muestras ejemplo de código en el trancurso del video me parece un ecxelente recurso didáctico. Muchas gracias, esta información me hizo sentir que mi código es aún muy pueril. Hice muchos cambios, y aunque aún no le acostumbro espero se vuelva rutina. Éxitos, sigue haciendo contenido profesional de calidad.

  • @alejandrocalderon7381
    @alejandrocalderon7381 4 роки тому +5

    Excelente video, Muy bien explicado, me gustaría otro video de estos principios pero en la práctica! Saludos

  • @jorgegodoy777
    @jorgegodoy777 4 роки тому

    Me encanta como explica este señor, super excelente. Gracias Master!!

  • @alvarocisneros1648
    @alvarocisneros1648 3 роки тому

    Muy bueno. Con todo y el debate sobre el Principio de Responsabilidad única.

  • @NicoILeone
    @NicoILeone 4 роки тому +2

    Excelente explicación! Te felicito. Era algo que nunca me terminaba de quedar claro. Por sobre todas las cosas el final donde aconsejas no ser tan rígido y utilizar partes de una herramienta si hace falta y no querer obsesionarse con seguir a raja tabla una técnica o teoría. Saludos y adelante!

  • @nyyacat91
    @nyyacat91 Рік тому +3

    Estoy en un Bootcamp y hoy estamos haciendo SOLID con java y ha sido muy útil, te has ganado una nueva subs al canal :)

  • @kevinpascual8433
    @kevinpascual8433 4 роки тому +3

    Wow como hubiera amado este video hace años cuando aprendi SOLID. Aun me acuerdo las horas que le eche a esto y en solo 10 min se tiene una base bien solida.

  • @vinyalexandertorres2536
    @vinyalexandertorres2536 3 роки тому

    Increíble como explicas los principios de manera tan sencilla, gracias a eso lo entendí a la primera !
    Saludos desde Colombia.

  • @josetuz
    @josetuz 3 роки тому

    Recien llego y ya me suscribí. Es muy agradable y amena tu manera de explicar. Un saludo desde Argentina.

  • @PauSanchez63
    @PauSanchez63 3 роки тому

    Sinceramente, no conocía tu canal y hoy mi jefe me ha comentado que empezaremos a usar SOLID. Nunca había oído hablar de este sistema y cuando he entrado en la wikipedia me ha sonado todo a chino. Ver tu vídeo me lo ha dejado todo clarísimo, tanto que se lo pienso recomendar a mi jefe para las nuevas incorporaciones. Mil gracias y mi más sincera enhorabuena de un, desde ahora, nuevo suscriptor.

  • @wilsonbalderrama
    @wilsonbalderrama Рік тому

    bravoooo !! que manera de explicar las cosas complejas en simples, te agradesco por tu video y tu aporte gracias!

  • @pabloguillermoalarcon1665
    @pabloguillermoalarcon1665 7 місяців тому

    Gracias la mejor y mas clara explicacion de principios de solid.

  • @orlandoubilla7055
    @orlandoubilla7055 4 роки тому +1

    Segundo video tuyo que veo, muy claro, muy preciso, buen contenido. Me suscribo!

  • @TheBorpol
    @TheBorpol 4 роки тому +1

    Excelente vídeo amigo, tienes una manera de explicar muy buena. Muchas gracias por el excelente contenido! Saludos desde Mexico

  • @nicolasflores6
    @nicolasflores6 2 роки тому +4

    Gracias por tan buen video. Estaría bueno que crearas un curso de creación de una API REST con Node y Express, pero esta vez usando TypeScript y aplicando los principios SOLID, junto con DDD y demás buenas prácticas y arquitecturas limpias. Pienso, que seria una version mucho mas avanzada para seguir aprendiendo cuando se termina tu curso de "Desde 0 hasta maestro - Creando el backend con Node JS"

  • @rodod9602
    @rodod9602 4 роки тому

    Me encanta el canal, son demas de mucha utilidad explicados de manera muy digerible, genial contenido

  • @jeremiasmedrano1384
    @jeremiasmedrano1384 2 роки тому

    gracias Martin, siempre tan claro

  • @versteckt_oficial
    @versteckt_oficial Рік тому

    Que manera de explicar tan genial. Estás en mi lista de UA-camrs favoritos en cuanto a tecnología. Saludos desde Chile 🇨🇱

  • @enriquemunoz1987
    @enriquemunoz1987 3 роки тому

    Tu forma de explicar, simplemente, brutal. ¡Enhorabuena!

  • @albertoespinamegia4292
    @albertoespinamegia4292 Рік тому

    Si señor, que bueno eso de explicar con ejemplos donde se ve claramante, muchas gracias por el aporte :)

  • @gonzalotorrez7246
    @gonzalotorrez7246 4 роки тому

    Impecable y super recomendable este vídeo!!

  • @godot2662
    @godot2662 Рік тому

    Muy bien explicado, muchas gracias

  • @brahamnduque8147
    @brahamnduque8147 4 роки тому

    Buenos videos, muy bien explicados sigue así! Saludos de un novato programador desde Colombia

  • @felipemartin6581
    @felipemartin6581 3 роки тому +52

    1:42 Principio de responsabilidad única
    Cada clase tiene sus funciones especificas
    3:00 Principio de abierto-cerrado
    No se modifica una clase, se hereda en otra y se elabora nuevo código
    5:04 Principio de sustitución de Liskov
    6:41 Segregación de la interfaz
    Separar las interfaces orientadas a las funciones necesarias en interfaces
    Por medio de clases pequeñas y especificas
    8:56 Inversión de la dependencia
    Las implementaciones deben depender de interfaces

    • @ae.h.h
      @ae.h.h 2 роки тому +1

      Creo que en el video se mesclaron estos 2 principios y no me quedo muy claro: Principio de sustitución de Liskov y Segregación de la interfaz. En la Segregación estoy de acuerdo pero en Sustitución no.

  • @ramr2416
    @ramr2416 8 місяців тому

    Muy bien explicado. Los ejemplos ayudan mucho a entender mejor. Gracias.

  • @metronomo1676
    @metronomo1676 2 роки тому

    clarísimo y breve!! Gracias!!

  • @any_paocs
    @any_paocs 2 роки тому

    Me encanta como explicas, es bastante entendible. Gracias

  • @money.masters
    @money.masters 4 роки тому

    Un vídeo muy didáctico y perfectamente explicado. Enhorabuena por el canal.

  • @albertotejos2423
    @albertotejos2423 3 роки тому

    Contenido muy bien explicado y de forma sencilla, gracias, sigue así!

  • @brianjohnson1863
    @brianjohnson1863 3 роки тому +1

    Muy buen video.
    Tus videos me hacen amar más mi profesión :)
    Saludos ^^

  • @desireless7132
    @desireless7132 4 роки тому

    Los ejemplos que das ayudan un montón , gracias por estos videos explicativos. Un saludo

  • @ramiroalegre8183
    @ramiroalegre8183 Рік тому

    Hasta hace poco no valoraba lo mucho que tu contenido es de utilidad. No me metí tanto en tu canal hasta que me toco implementar el patron de diseño decorator, y como lo explicaste muy bien se me dio por ver más videos que en otro momento los deje pasar porque no eran de interes, y que errado estaba!. Esto de traer temas que no dependan demasiado de los lenguajes de programación (Aunque esta bien tener TS para dar un ejemplo) es excelente!. Actualmente estoy pasando de a poco un sistema que no cumple casi nada de SOLID y se nota la dificultad que podría evitarse si se hubiera implementado, más que nada con la "S" de SOLID. Un saludo.

  • @martinghiena5270
    @martinghiena5270 4 роки тому +1

    Necesito hacerme un poster con las formas normales de Boyce Codd, el ISO stackflow y ahora con SOLID.
    Excelente video!!!

  • @ziixu
    @ziixu 4 роки тому +45

    Por fin parece que UA-cam te esté haciendo un poquito más de caso, me alegro de que el canal crezca :)

    • @sebastianvera1428
      @sebastianvera1428 2 роки тому

      Aca tb amigo, estan bien explicados, va subiendo de a poco ua-cam.com/video/NqrNHagw3-0/v-deo.html

  • @compartelo007
    @compartelo007 4 роки тому

    Bestial explicación, GRACIAS

  • @alejandrocarriongosin5383
    @alejandrocarriongosin5383 Місяць тому

    muy buena explicación entendible de SOLID, felicitaciones!!

  • @ivanpereira9820
    @ivanpereira9820 2 роки тому

    Excelente video,muchas gracias por compartir

  • @AetendaVater
    @AetendaVater 4 роки тому

    Que bien explicado, me costaba agarrarle a estos principios pero ahora ya los tengo mas claros, un saludo

  • @lowdeffinition
    @lowdeffinition 4 роки тому

    Muy bueno! Y muy buen comentario al final! Son herramientas! Ya que ningún código o arquitectura que exista (y esto se prueba matemáticamente) se salva del principio de complejidad vs completitud. Lo que uno piensa que es correcto y "solido" deberá mostrar matemáticamente en el campo mas formal posible, sino, siguen siendo buenas herramientas para construir.

  • @pablohernandez4305
    @pablohernandez4305 2 роки тому

    Me encanto el video por favor mas videos sobre este tipo de contenido

  • @TheFJS98
    @TheFJS98 4 роки тому +15

    Gran video! El siguiente o alguno futuro puede ser sobre los unit test? Un saludo!

  • @samuelh391
    @samuelh391 4 роки тому

    Excelente explicación! Súper clara! 👍👍

  • @LucasRomeroDiBenedetto
    @LucasRomeroDiBenedetto 4 роки тому

    Muy buen video. Ojalá pudieras construir una serie de videos de mínima teoría de programación para acompañar lo que se ve en la universidad.

  • @cristianrosas2344
    @cristianrosas2344 4 роки тому

    Explicas muy bien y la información es súper interesante y fácil de digerir :D

  • @horaciolampe166
    @horaciolampe166 Рік тому

    Excelente video. Muy bien explicado. Genio

  • @enriquemoreno5132
    @enriquemoreno5132 4 роки тому

    Muchísimas gracias por la explicación!

  • @xavierito2971
    @xavierito2971 4 роки тому

    Estaría muy bien que uno de los próximos videos fuese una explicación en las ramas que tiene la carrera y hacia donde está orientada cada rama .
    Me ayudaría mucho a mi y a compañeros de clase que no sabemos bien bien que elegir.🙂💪

  • @humbertomanjarres7385
    @humbertomanjarres7385 3 роки тому

    Excelente explicación!!

  • @1985stout
    @1985stout 4 роки тому

    Muchas gracias!

  • @jefferbcn89
    @jefferbcn89 Рік тому

    Gracias por tu explicación, después de mucho videos, por fin entiendo estos principios.

  • @jeferson9011
    @jeferson9011 4 роки тому

    Muy bueno, tienes u nuevo seguidor! Sería bueno el vídeo de patrones de diseño. También uno de las mejores API según tú criterio, no la típica API del clima.

  • @PterPmntaM
    @PterPmntaM 4 роки тому

    Muy buen vídeo, gracias por la información.

  • @Chemaclass
    @Chemaclass 4 роки тому

    Estos videos que haces son genial. Muy bien explicados.

  • @terry-
    @terry- Рік тому

    Muy bueno! Hiciste el video sobre el encuentro entre la herencia y el diseño por componentes? Me parece muy interesante y mas contenido sobre desarrollo de juegos. Suerte!

  • @TheRadBass
    @TheRadBass 2 роки тому

    Muchisimas gracias por este video, me ayudó demasiado a comprender los principios solid!

  • @caneallestamartinez2797
    @caneallestamartinez2797 3 роки тому

    Una pasada de vídeo 🔥 gran trabajo 💪 Saludos!!😊

  • @mamotero5086
    @mamotero5086 4 роки тому

    Buenísimo!!!! Gracias!!

  • @quieromicubita
    @quieromicubita 4 роки тому

    Qué buenos consejos. Gracias por tus vídeos!

  • @freddvincent
    @freddvincent 2 роки тому

    *Muy buen video, felicidades*

  • @MglRod
    @MglRod 2 роки тому

    Gracias totales, todo muy claro, .... ando repasando para mi entrevista técnica XD

  • @okarook
    @okarook 4 роки тому

    Muy interesante el vídeo y la forma de explicar, me gustaria aprender a diseñar componentes con buenas prácticas. Para aplicarlos a las nuevas librerías y framework como lo son angular, react y demás. Puede regalar alguna documentación donde hablen de ellos.

  • @valevlogs9493
    @valevlogs9493 10 місяців тому

    ¡Excelente video! Gracias por la ayuda (:

  • @saulramirez727
    @saulramirez727 4 роки тому

    Muchas gracias. Estuvo genial el video

  • @xavimc95
    @xavimc95 3 роки тому

    Excelente, muchas gracias, maestro. Comentario para el algoritmo de UA-cam

  • @karinalejandrolugogutierre5395
    @karinalejandrolugogutierre5395 3 роки тому

    Muy buen video tutorial, saludos desde Venezuela.

  • @ElCarmenTalleres
    @ElCarmenTalleres 4 роки тому

    desde la uma de informatica de malaga te seguimos toda una clase sube mas videos de programacion orientada a objetos, programar con c++ y estadisticas ( big data ) con r

  •  4 роки тому

    Te traes excelente canal aqui... abrazos desde el otro lado del atlantico

  • @nmoschen
    @nmoschen 4 роки тому

    Excelente contenido! 👏 Un clásico

  • @arielbarrios3915
    @arielbarrios3915 4 роки тому

    No sé cómo haces para ser tan claro cuando explicás un concepto 🤔 . Gracias por tu tiempo

  • @gonzaloog
    @gonzaloog 4 роки тому

    WOW!... Excelente explicación!

  • @rubenpinadero5532
    @rubenpinadero5532 4 роки тому

    Gracias por la explicación.

  • @cortizmardones
    @cortizmardones Рік тому

    Increíble video, gracias por la explicación , nuevo sub

  • @asegura96
    @asegura96 2 роки тому

    Excelente explicación

  • @enriquedonaire5378
    @enriquedonaire5378 Рік тому

    Bravo!!! Easy like that! ❤❤

  • @nicolascantoro518
    @nicolascantoro518 2 роки тому

    gracias betatech excelente!!!

  • @miguelangelzapataclaros8810
    @miguelangelzapataclaros8810 4 роки тому +20

    Podrias hacer videos hablando de los patrones de diseño y su implementacion.
    Haces muy buenos videos sigue adelante

    • @cmicolis
      @cmicolis 8 місяців тому

      Solo se hacen videos que hablan de patos con diseño. 😁

  • @fernandog5367
    @fernandog5367 3 роки тому

    Excelente!

  • @gTosca_666
    @gTosca_666 4 роки тому

    Soy programador Java, tu canal es muy interesante.

  • @Joseopg
    @Joseopg 4 роки тому +1

    Excelente Aporte, espero un vídeo sobre interfaces

  • @hunabku5349
    @hunabku5349 4 роки тому

    Hola, soy nuevo en tu canal, felicidades por el este video muy bien explicado. Tendrás un video donde expliques alguna metodoogía de desarrollo individual, o qué metodología usas de manera personal cuado comienzas con un nuevo proyecto desde cero y lo vas a realizar tu solo. Qué recomendarías a los desarrolladores que comenzamos con un proyecto y nunca o nos cuesta mucho terminarlo completamente. Gracias y felicidades de nuevo.

  • @hectorb.calles5943
    @hectorb.calles5943 4 роки тому

    Makina explicas todo tan facil, eres un crack te has ganado a un seguidor fiel

  • @javid2340
    @javid2340 4 роки тому

    Esperando otro buen video explicando la relación entre herencia y por componentes. ¿Son realmente competidores de un mismo espacio, en el que podemos elegir uno u otro al gusto? ¿Son dos formas con el mismo objetivo, y por tanto hay que elegir con cuál lo alcanzaremos más convenientemente? ¿Cuándo uno y cuándo el otro? ¿Cuándo no utilizarlos? ¿Hay otra alternativa?
    Por otro lado, la inversión de control, como la has explicado no se parece a la que hacen los frameworks (en contraposición a las librerías). ¿Podrías aclarar si son dos cosas con el mismo nombre o por qué lo ha parecido?

  • @j-kevinm2427
    @j-kevinm2427 4 роки тому

    no estudio ing informatica soy estudiante de otra carrera pero con fe , explicas muy bien por que si entendi a pesar que no me relaciono a la cerrera, mas bien si alguien sabe una pagina web para aprender programación algo como inteligencia artificial o paginas web o algo mas estándar soy super novato asi que helpe, gracias

  • @ryuzaki137
    @ryuzaki137 Рік тому

    Lo dije en otro video y lo vuelvo a decir aqui, eres un genio, la forma de explicar, los recursos visuales, los ejemplos; todo perfecto xd

  • @gerzepellin2350
    @gerzepellin2350 3 роки тому

    Me encanto tu video brother, sigue haciendo videos asi !!

  • @MrEdward2553
    @MrEdward2553 3 роки тому

    Buenísimo el video hermano

  • @creepermanpro
    @creepermanpro 4 роки тому

    Excelente vídeo amigo

  • @berwick82
    @berwick82 2 роки тому

    qué fácil lo explicas. claro, breve y al grano.
    Gracias !!

  • @juansho93
    @juansho93 Місяць тому

    Muy buen contenido, muchas gracias. Pregunta, los ejemplos de código que haces en que lenguaje es y en que programas haces esos ejemplos explicativos? Muchas gracias.

  • @diosesamor.6213
    @diosesamor.6213 4 роки тому

    Suscrito. Lo máximo

  • @aabbccdd11211
    @aabbccdd11211 4 роки тому

    Tengo que renovar mis conocimientos de programación, me he quedado un poco anticuado, gracias a ti lo estoy consiguiendo

  • @eljardindelcodigo8462
    @eljardindelcodigo8462 3 роки тому

    Que gran calidad del video!
    Nuevo sub :)

  • @ADevStory
    @ADevStory 4 роки тому

    ¡Muy buen vídeo! ¡Explicas muy bien! Una pregunta, ¿que software usas para las animaciones en pantalla?

  • @jezaultalejandroramireztel8011
    @jezaultalejandroramireztel8011 2 роки тому

    Sublime, elegante, flexible, hermoso!, Gracias por introducirme a esto tan útil!, Te ganaste un seguidor!

  • @marcomarkez3807
    @marcomarkez3807 8 місяців тому

    Buen video e interesantes comentarios, a ver si en el futuro hablas más de SRP

  • @qkdesign93
    @qkdesign93 4 роки тому

    Gracias por hacer el video :) !