De código espagueti a código PROFESIONAL en 15 Minutos

Поделиться
HTML-код
  • Опубликовано: 24 янв 2025
  • НаукаНаука

Комментарии • 38

  • @franciscojavierramirezhern8588
    @franciscojavierramirezhern8588 12 дней назад +10

    Primer video de tu canal que veo, me encantó tu manera de explicar. Nuevo sub

    • @ProductCrafter
      @ProductCrafter  12 дней назад

      Gracias! Si quieres un video sobre algún contenido en especial dime!

  • @placebojunior9779
    @placebojunior9779 13 дней назад +9

    Saludos 'Product Crafter', vi tu video y he revisado tus demas videos, parece que tienes un enfoque mas profesional, de la estructura, estetica, eficiencia del codigo. Al principio no te tenia fe, al ver la sugerencia de tu video por parte de RUclips, crei que eras otro vende humos mas de RUclips en cuanto a 'Coding', que solo busca ganar dinero con vistas, likes, membresías de canal, vender cursos, pero parece que no es asi, al contrario veo tu ❤ amor por el 'Coding', como crear excelentes pautas de arquitectura, estetica, eficiencia en el mismo, personas como tu son como el Mozart de nuestra epoca, hacen que me enamore mas del 'Coding'❤️, gracias mi compa.

    • @marcosantonioavilamorales5881
      @marcosantonioavilamorales5881 13 дней назад +2

      No le veo nada de malo a hacer contenido y querer recibir vistas y likes. Es un sentimiento natural en el ser humano querer recibir reconocimiento y sentirse útil. Aunque lo hiciera por likes el calificativo de "vende humos" está fuera de lugar en este contexto.

    • @ProductCrafter
      @ProductCrafter  13 дней назад +1

      Gracias por el comentario! ❤️ La verdad es que me motiva mucho enseñar y RUclips es el medio perfecto! Espero que te sigan gustando mis videos!

  • @benain
    @benain 2 дня назад +1

    Muy bien explicado y ameno. Mil gracias!!
    Me suscribo al instante :D

  • @debajodelagua1
    @debajodelagua1 12 дней назад +2

    Muy bueno!! Muy clara la explicación... Muchas gracias 🙌🙌🙌🙌

    • @ProductCrafter
      @ProductCrafter  12 дней назад

      Gracias! Me alegra que te haya gustado!

  • @Kikoken73
    @Kikoken73 13 дней назад +2

    excelente video, opino igual que tu , me encantan los valueobject

  • @sxzzzzz
    @sxzzzzz 14 дней назад +2

    Gracias por los vídeos, son increíbles, es complicado encontrar canales en español que hablen de estas cosas! Podrías subir algún vídeo más centrado en temas de arquitectura, diseño, events/CQRS y relacionados?

    • @ProductCrafter
      @ProductCrafter  13 дней назад +2

      Claro! Tengo algunas ideas sobre arquitectura que quería hacer, tengo en cuenta tus sugerencias gracias!

  • @DogWithTheHatt
    @DogWithTheHatt 15 дней назад +2

    Hola! muy buenos videos, facil de entender y se entiende la idea, me queda una duda, cuando aprendí a utilizar este concepto de value objects o definicion de logica de negocio, lo hice en pydantic, cual sería la diferencia con dataclass?

    • @ProductCrafter
      @ProductCrafter  15 дней назад +1

      Es lo mismo, simplemente pydantic tienes que instalarlo, pero para value objects cumplen la misma función

  • @TheLaiKash
    @TheLaiKash 15 дней назад +6

    Entiendo la manera de explicar los value objects como un concepto que tiene lógica de negocio o como valores que no necesariamente tienen sentido por separado (como pesos, precios...) pero para algunos cerebros como el mío es algo que hay que llevarlo a conceptos más "de bajo nivel" (me quedo corto con las comillas). Para mí un value object es algo (una estructura) que cuando comparas con otro son iguales si y solo si sus valores (todos ellos) son iguales, siendo estos inmutables. En OOP serían objetos que se consideran iguales si todos sus valores son iguales. Esto es contrario a las entidades, como usuarios, que pueden ser mutables (un usuario puede cambiar su dirección) y que cuando comparas dos comparas identificadores, por ejemplo.
    En mi opinión esto es importante porque en otros lenguajes no estamos hablando solo de conceptos que se pueden agrupar como tal. En general dos objetos, estructuras o lo que sea (salvo primitivos) son iguales si apuntan a la misma dirección de memoria. Esto, que para ingenieros informáticos es lo intuitivo, es el concepto contrario a los value objects, otra manera de pensar. Por eso se devuelve siempre una copia del objeto en vez de mutar el mismo.
    Pensar así te abre también a entender cosas como el borrow checker de rust o te hace entender que en ciertos casos no interesa hacer lógica en base a value objects porque son muy costosos en cuanto a memoria.
    Igualmente, buen enfoque, solo quiero añadir mi punto de vista!

    • @ProductCrafter
      @ProductCrafter  14 дней назад +1

      Gracias por compartir tu punto de vista! Te hago una pregunta porque yo tengo siempre la duda, si tenemos un value object que representa peso que tiene unidad y cantidad, imagina que tenemos 2kg y 2000g. Yo si comparo los dos value objects espero que me diga true. Pero sin embargo no tienen los mismos atributos (2 vs 2000 y g vs kg). ¿Son Value Objects o estamos haciendo algo mal?. Es algo que le he dado mil vueltas y para mi sí son Value Objects. Que los "atributos" sean iguales también podría expresarse como que sus valores sean "equivalentes".

    • @TheLaiKash
      @TheLaiKash 14 дней назад +1

      @ProductCrafter si, son lo mismo porque conceptualmente tienen el mismo valor expresado de distinta forma. Creo que piensas como yo y te vas al concepto programático de valor en vez de al concepto 😆 A mi también me cuesta abstraer. El problema viene siendo con cosas cuyo valor es dinámico, como el cambio de divisas. En ese caso habría que llegar a un convenio en la lógica de negocio (histórico de precios de los últimos 5 años, consultar una API de manera dinámica...). Pero lo podemos complicar aun más. Son lo mismo 1dm3 que 1l? Si y solo si tienen la misma densidad que el agua. Importa? Si es una app de cocina, generalmente no. Pero si es de quimica...
      Cuando me pasan estás cosas pienso en la inmutabilidad como concepto y en la lógica de negocio. Por ejemplo en divisas, aunque consultar el cambio a una API es dinámico, el concepto de "es inmutable que siempre se va a comprobar el cambio dinámicamente" es lo que me ayuda. A mí también me explota la cabeza cuando sobre pienso, y eso que yo vengo del mundo de la ciberseguridad 😊
      Por cierto, me he estado viendo todos los videos que tienes en el canal, bastante de acuerdo con tu linea de pensamiento! Gracias por estos vídeos!

  • @alberto3028
    @alberto3028 15 дней назад +2

    Sí, otro ejemplo podría ser Coordinate con las propiedades latitude, longitude o DateRange con startDate endDate. No podemos olvidar que los value objects pueden tener solo una propiedad, por ejemplo Email, por sí solo no tiene sentido, pero sí puede formar parte de otros value objects o entidades/agregados, esto nos permitirá centralizar, reutilizar y abstraer los tipos.

    • @ProductCrafter
      @ProductCrafter  15 дней назад

      Exacto!!

    • @damianjoel5833
      @damianjoel5833 14 дней назад

      Tener un ValueObject Email es super util ya que validas que el string que viene por el factory method o por constructor tenga el formato correcto, dentro del value object podrias poner el Regex para validarlo. Lo mismo para una ValueObject PhoneNumber, etc. Incluso se puede tener value objects por campos aislados como UserName porque un username valido solo tiene caracteres con letras, debe tener minimo 5 caracteres, no puede estar vacio, etc. Tiene la contraparte que te aumanta considerablemente el codigo si el lenguaje es fuertemente tipado y poco funcional. Pero como dice el muchacho en el video, eso tiene el beneficio de ser robusto y mucho mas facil de mantener a largo plazo. Ademas que es mas facil de leer.

    • @alberto3028
      @alberto3028 14 дней назад

      @ divide y vencerás

  • @ArnauNau
    @ArnauNau 5 дней назад +1

    Buen contenido! pequeño apunte Weight se pronuncia parecido a Wait, no 'weiz'

    • @ProductCrafter
      @ProductCrafter  5 дней назад

      Gracias!! 🤦‍♂️ Fallitos de estos nunca me doy cuenta, ya no me vuelve a pasar con Weight!

  • @javier01123
    @javier01123 12 дней назад +1

    y como mapearias los value objects a una base de datos?

    • @ProductCrafter
      @ProductCrafter  11 дней назад +1

      Gracias por preguntar! Hay varios patrones. Por ejemplo un value object coordenadas que tuviese los atributos latitude y longitude podías guardarlos en la tabla tal cual como latitude y longitude o asignarles un prefijo como por ejemplo location_latitude y location_longitude para dejar claro que esos dos campos pertenecen a un concepto que los engloba llamado location. Las dos están bien y depende el contexto puede quedar más clara una o la otra. Cualquier duda más dime!

  • @gabrielxd735
    @gabrielxd735 13 дней назад +3

    yo solo vine a burlarme por q era python pero aprendi mucho :D

    • @ProductCrafter
      @ProductCrafter  12 дней назад

      Jajajaja me alegro! Al final le coges el gustillo a Python jaja

  • @marcelooscarjose8515
    @marcelooscarjose8515 9 дней назад +1

    creo que el ejemplo con pesos no deja en claro muchas cosas. Si uno define un peso como kg si queremos decir que son 500 gramos pasamos 0.5. En las bases de datos se usan floats para los pesos para permitir justamente este tipo de casos. El ejemplo sería mejor para monedas y hacer conversiones por ejemplo entre Dólar y Euro y hacer transferencias de dinero usando la conversión que tenemos, en el caso de pesos no lo veo muy claro. Si fuesen temperaturas también tendría sentido ya que podrían ser celsius o Fahrenheit. Decir que algo pesa 500 gramos o 2 kilos no tiene sentido, se usan o gramos o kilos y listo

    • @ProductCrafter
      @ProductCrafter  9 дней назад

      Si que es verdad que como la transformación entre kg y g es intuitiva no se ve tan claro el valor que aporta, aun así encapsulándolo en un Value Object tienes las ventajas de la validación (no tienes pesos negativos) y de poder transformar entre unidades. Gracias por el apunte!!

  • @eddddakdlasd-om6yt
    @eddddakdlasd-om6yt 13 дней назад

    Pues raro tu codigo yo pondria todo en gramos y solucion hecha. Pondria el tipo en numero entero sin signo. La verdad no se si se mejoro el codigo

    • @ProductCrafter
      @ProductCrafter  13 дней назад +2

      Es otra forma de programarlo sÍ, también se podrían haber implementado factory methods en el value object para instanciar desde diferentes unidades pero acabar siempre en gramos. Para mi lo importante es darle ese significado de "Peso" que conseguimos dándole entidad de negocio, pero hay muchas maneras de representarlo. Gracias por el comentario!

  • @onlyafriend
    @onlyafriend 6 дней назад

    preferia que utilices programacion funcional con interfaces

  • @maximiliano2542
    @maximiliano2542 13 дней назад +2

    Es horrible python, nose como se hizo tan popular xd

    • @ProductCrafter
      @ProductCrafter  12 дней назад

      En general porque es fácil de aprender y de enseñar!

    • @davidmataviejo3313
      @davidmataviejo3313 8 дней назад

      Python es horrible cuando se usa programación orientada a objetos. El autor debería usar java, kotlin o c# para explicar estos temas

    • @maximiliano2542
      @maximiliano2542 4 дня назад +1

      @@davidmataviejo3313 concuerdo contigo, lo q mas apesta en pythton y no tolero es que no tenga corchetes, que los tabs o espacios sean la regla, como odio eso, y al final todo son libs hechas en cpp u otro lenguaje