No seas maleducado es forma mas preciosa de verlo y hasta hora me entero... Por fin lo entiendo, gracias !!!!
@ProductCrafter5 күн бұрын
Jajaja, me alegro de que te haya gustado! Gracias a ti por comentar!
@ReymarMendКүн бұрын
Hermosa metáfora, brillante
@OmarAngaritaJ10 күн бұрын
No había entendido del todo la ley de demeter pero con la analogía de "no seas maleducado" quedó muy claro todo. Excelente
@ProductCrafter10 күн бұрын
Gracias! Me alegro de que te haya servido 🙌
@davidag905 күн бұрын
Buena analogía y un lindo concepto para emplear. Un poco en la línea de esa premisa que establece que las propiedades de los objetos no deben ser accedidas directamente (sobre todo desde fuera), sino que deben contar con métodos de consulta, seteo y modificación. Gracias por compartir!
@ProductCrafter5 күн бұрын
Gracias a ti por el comentario!
@spaniard136 күн бұрын
En resumen, no te debes demeter donde no te llaman.
@ProductCrafter6 күн бұрын
😂😂😂😂😂😂
@BhEaN11 күн бұрын
Me ha encantado la metáfora de coger la cartera del cliente para quitarle el dinero diréctamente XDDD... muy buena explicación. Únicamente creo que hubiera quedado mucho más completo si de verdad hubieras definido unos interfaces previamente, ya que aunque se presupone que los estas usando, realmente no es así... solo has llamado a unos métodos que has ido definiendo sobre la macha. Se entiende perfectamente a lo que te refieres, pero quizás hubiera quedado más claro el concepto de esa forma. Saludos!!
@ProductCrafter10 күн бұрын
Le doy una vuelta para la próxima vez 🤔 Gracias por comentar!
@marlonrugama214810 күн бұрын
Casualmente estoy trabajando en una aplicación modular que conlleva crear interfaces e implementación. Tienes que lidiar con control de acceso y otras técnicas. A simple vista es más trabajo y sí que lo es, pero a largo plazo el proyecto resulta bien organizado, escalable, modular y separación de responsabilidades. Cuando tienes los módulos separados puedes reutilizarlos y crear un nuevo feature se vuelve más rápido y fácil. Pero el inicio es doloroso sin duda alguna.
@ProductCrafter10 күн бұрын
Como dices es un trade off, al final cambias algo de velocidad al principio por agilidad después. Gracias por comentar!
@johnclaius109110 күн бұрын
Vine buscando cobre y he encontrado oro! Excelente material!
@ProductCrafter10 күн бұрын
Gracias!!
@odoncm10 күн бұрын
Que chulos todos estos métodos de funcionamiento que explicas, me encantan!!!! Gracias.
@ProductCrafter10 күн бұрын
Me alegro! Muchas gracias!! 🙌
@wiskys9810 күн бұрын
Una analogía espectacular! Muy buen video, esperando ya el siguiente 😁
@ProductCrafter10 күн бұрын
Gracias! 🙌 El lunes o así subiré otro jaja
@robertomorandeiraaparicio15957 күн бұрын
Muy buen ejemplo! Hay una bug en el cambio en la wallet. Comprueba si tiene más dinero de forma estricta, con lo que si la cantidad es 100 dirá que no, cuando en realidad sí que tiene suficiente dinero, quedándose a cero. Un saludo!
@ProductCrafter7 күн бұрын
Buen ojo! Gracias por comentar y avisar del fallo!!
@ezequielbitschin683210 күн бұрын
Muy bueno!! Estaría genial si subís algún video abordando un poco los problemas que trae aplicar ésta ley estrictamente (por ej. Tell, don't ask -> explosión de métodos) y formas de abordarlos (por ej. usando inyección de dependencias / interface segregation) buscando algún punto de equilibrio. Gracias por el gran contenido ;)
@ProductCrafter10 күн бұрын
Me parece muy interesante! Lo apunto a la lista que tengo de videos para revisar! Gracias por la sugerencia! ❤️
@ZorMon9 күн бұрын
Lo mejor para evitar caer en este error es hacer siempre por defecto todas las propiedades de una clase privadas. Luego ya si necesitamos hacer pública una por alguna razón, pues la hacemos, y si el lenguaje lo permite, mejor aún hacerla readonly para asegurarnos de que se no se modifique desde fuera.
@busters.208 күн бұрын
Muy buena explicación
@ProductCrafter7 күн бұрын
Gracias! 🙌
@jeanpitech9 күн бұрын
Excelente maestro!!
@yousef-xyz9 күн бұрын
Que hermoso es un codigo bien refactorizado ❤
@edwinfajardo21356 күн бұрын
Los principipios SOLID en acción
@juancarlospizarromendez39549 күн бұрын
Naturalmente, la caja electrónica dirá, "A pagar: X". A la cajera no le interesa si hay o no hay dinero en el monedero del comprador, ni las tarjetas de crédito/débito que podría tener, etc. Si el comprador no puede pagar X a la cajera entonces se complicará el trato, y por eso está la POO para intentar continuar el protocolo del impago.
@Daath19907 күн бұрын
Yo lo conozco más por uno de los principios de base de datos: "Déjale al Cesar de lo que es del Cesar, por algo es el emperador de Roma"
@ProductCrafter6 күн бұрын
No lo había escuchado nunca! 🤔
@MrSurinen9 күн бұрын
excelente video excelente barba
@ProductCrafter8 күн бұрын
Jajajajajjaja ❤️
@HorelvisCastilloMendoza6 күн бұрын
Yo siempre lo he conocido por encapsulamiento y aislamiento entre clases
@ProductCrafter5 күн бұрын
Son conceptos relacionados sí!
@IgnaDevPokemon8 күн бұрын
Gracias por este contenido
@Emanuel-yb3qk9 күн бұрын
Bua brother, muchas gracias por esto.
@ProductCrafter8 күн бұрын
Gracias a ti!
@alexdevorigin110 күн бұрын
Excelente explicación.
@ProductCrafter10 күн бұрын
Gracias!
@TheLaiKash11 күн бұрын
Muy buen consejo! No te das cuenta de esto hasta que tienes que refactorizar un código y cambiar 8000 lineas de código que accedían a un atributo de una clase chiquitita, por ejemplo. De este modo solo tienes que cambiar la implementacion de la clase chiquitita siempre y cuando devuelva el mismo tipo que antes. También ayuda a que no todo esté accesible por otras partes del código y a hacer más legible todo, algo así como los getter y setter en Java (creo que en python se hacen con @property y @attribute.setter). Muy buenos estos mini-tips en vídeos chiquitos!
@ProductCrafter10 күн бұрын
Me suena ese tipo de refactor 😅 No es divertido jaja
@elcaza111910 күн бұрын
Excelente video!
@ProductCrafter10 күн бұрын
Gracias!!
@JardanySvidrigailov10 күн бұрын
Me encanto la metáfora
@ProductCrafter10 күн бұрын
Gracias!!
@kaitenague6 күн бұрын
bueno, python tampoco fué pensado para hacer código empresarial de gran calidad, es más orientado a glue code y srcipting aunque lo usen mucho los matemáticos para hacer cosas rápido.
@ProductCrafter6 күн бұрын
Todos sabemos como es Python 😂 Pero es que es súper versátil jaja
@Santana-90010 күн бұрын
Esto en el mundo real no crees que complica mucho el desarrollo. Piensa que has creado 4 métodos, métodos que seguramente se vayan a repetir varias veces porque hay sistemas enormes donde no te vas a acordar que ya hiciste algo parecido en otro lado. En mi caso trabajo con Odoo y me cuesta ver como podría aplicar esta lógica en un sistema tan grande Pd: Me ha encantado el vídeo, tienes un nuevo subs
@ProductCrafter10 күн бұрын
Al final es un trade-off. Es tener estos métodos o el día que cambie la wallet tener que tocar en 1000 sitios. Si la wallet la usas poco y está controlada (es poco volátil) puedes aceptar el trade off de no abstraerla. Todo "depende" en el desarrollo jajaja. Gracias por el comentario!!
@FranciscoAntilef-h9g10 күн бұрын
Me encanto la explicacion , pero siento que sigue rompiendo la ley de demeter al preguntar si posees el amount, no deberia solicitar el pago y en caso de NO contener suficiente amount la wallet deberia levantar una excepcion de dominio(la cual no esta creada en el ejemplo por simplicidad, asumo)?? saludos
@ProductCrafter10 күн бұрын
Siii! Pero eso que mencionas es el principio de "tell don't ask", que está muy muy relacionado con la ley de demeter pero no son la misma cosa exactamente. Pero me encanta que hayas visto intuitivamente que le fallaba algo! Eso muestra que escribes código como toca 🙌. Miraré de hacer un video de ese principio o de los dos juntos, gracias por el comentario!!
@firielcasselius40339 күн бұрын
De pronto me siento inteligente porque siempre he puesto mis atributos como private, uso metodos para todo.
@ProductCrafter8 күн бұрын
Perfecto entonces! Bien encapsulado
@franklynt23519 күн бұрын
saludos amigo creo el concepto es mas apropiado a una validación que a a no producir código espaguett las buenas practicas como la explicas la evitasi es la manera de hacerlo correctamente pero el titulo es confuso al aplicarlo
@ProductCrafter8 күн бұрын
Gracias por el feedback! Si que es verdad que puede llevar a equivocación. Le buscaré otro mejor! Gracias!
@mayonesaka10 күн бұрын
La ley de Demeter hasta meter xDDDDD ya me voy, Un saludo!!!!
@ProductCrafter10 күн бұрын
😂😂😂
@jonathaneugeniosandovalmar239111 күн бұрын
Siento que estudio y no logro consolidar todos los conocimientos
@ProductCrafter11 күн бұрын
Poco a poco! La mejor forma de consolidar las cosas es aplicándolas, desarrollar es algo que se aprende mucho haciendo, así que dale tiempo y poco a poco va mejorando todo! Gracias por comentar!
@JoSe0862 күн бұрын
Wallet debería ser un paymentMethod inyectado (por qué wallet y no credit card?) con un único método pay que contenga dentro la lógica para realizar el pago (que puede ser distinta según el método de pago, conectarse al banco, a paypal…) y devolver el resultado de la operación. De la manera que lo has presentado hay muchísimo acoplamiento todavía porque manejas la lógica de Wallet dentro de la clase Customer. El título es “como dejé de hacer código spaguetti” pero esto sigue siendo bastante spaguetti 😅 (lo siento)
@ProductCrafterКүн бұрын
Totalmente cierto!! El objetivo del video era mostrar la ley de demeter, el lunes subo un video partiendo de este explicando el principio de "tell don't ask" donde comento los problemas que comentas, pero en vez de inyectar el método de pago he optado por un customer.pay() que hace un wallet.pay() y wallet ya sabe como pagar. Gracias por el feedback! Si ves algo que tampoco te convence del video del lunes dime! Lo aprecio mucho 🙌
@hawkapparel9 күн бұрын
Buena info!
@_DT_9 күн бұрын
dentro de Wallet yo tendria los metodos get_money_amount() y set_money_amount() y como tu dices. dentro de esas funciones validaria si me llega el tipo de dato correcto.