NO Uses IF anidados. HAZ esto!

Поделиться
HTML-код
  • Опубликовано: 11 сен 2024
  • En este video voy a mostrarles como el uso excesivo de IF anidados es una mala práctica y como podemos corregirlo usando esta técnica llamada guard clauses o clausulas de guarda.
    Esta técnica permite una escritura de código más limpia y legible.
    Gracias a ‪@FlutterMapp‬ por la inspiración y apoyo:
    • Nesting "If Statements...
    Únete a este canal para obtener acceso a todos los LIVES pasados.
    / @diegoveloper
    Contenido exclusivo para miembros:
    • Members-only videos
    🔵 Sígueme:
    / diegoveloper
    / diegoveloper
    / diegoveloper
    github.com/die...
    diegoveloper.com/
    📌 Playlists
    - Flutter Animations Tutorial
    • Animaciones en Flutter
    - Flutter Challenges
    • Flutter Challenges
    - Flutter Tips - 1 minute:
    • Flutter Tips - 1 minute
    ✅ Coaching/Asesorías
    www.buymeacoff...
    💻 My Setup:
    Standing Desk: amzn.to/39HLvut
    Anti Fatigue Standing Desk Mat: amzn.to/3thoaZM
    Monitor: amzn.to/36wQy0c
    Monitor Arm: amzn.to/3r3J5h0
    Macbook Arm: amzn.to/3acOvzq
    Macbook Tray: amzn.to/3r7dBXm
    Macbook Vertical Stand: amzn.to/3NqQl11
    Dock All in one: amzn.to/3yP9FQv
    Webcam: amzn.to/3qfILMf
    Camera: amzn.to/3HeeV2P
    Camera Mic: amzn.to/2MdxVaC
    Speakers: amzn.to/2YAqFrY
    MultiPort Adapter USB-C: amzn.to/2N98rLP
    Phone Holder: amzn.to/379BmGv
    Headphones: amzn.to/2YzUE39
    Keyboard: amzn.to/3qkMsA8
    Wood Keyboard Tray: amzn.to/3cJRrXl
    Microphone (current): amzn.to/3i5GyQC
    Microphone (old): amzn.to/3rbAVD9
    Microphone Stand: amzn.to/3rLfhpx
    Mouse Logitech: amzn.to/3cpVFDc
    Mouse Pad Razer: amzn.to/2MHvDjV
    Mouse Mat Desk Logitech: amzn.to/3G0knFi
    Strip Lights: amzn.to/36w0F5x
    Main Light: amzn.to/3yU359y
    Secondary Lights: amzn.to/2UbNpzY
    Goku Figure: amzn.to/36tjx4X :v
    Chair (Herman Miller): • La MEJOR SILLA de ofic...
    Gracias por ver este video, espero que ayude a los estudiantes de programación, ciencias de la computación, desarrolladores, etc.
    Esto aplica a cualquier lenguaje de programación, no solamente Dart en Flutter.

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

  • @FlutterMapp
    @FlutterMapp 2 года назад +170

    Diego to the moon! 🔥🔥🔥 Wish you the best with this video 🚀

    • @diegoveloper
      @diegoveloper  2 года назад +15

      thanks for the inspiration/idea and everything haha, :)

  • @gabrielalem123
    @gabrielalem123 2 года назад +51

    Excelente vídeo. Lo que sí, yo no diría "está mal" 0:08 Yo diría "ineficiente" pero mal no está.

    • @nicolasberti4253
      @nicolasberti4253 2 года назад +6

      no es ineficiente, es poco legible, son dos cosas diferentes

    • @almogaverXIII
      @almogaverXIII Год назад +2

      No es ineficiente, es ilegible. Y pudiéndolo hacer legible lo convierte en código mal hecho.

    • @fleringarlegends
      @fleringarlegends Год назад +10

      @@almogaverXIII Aun sigue siendo legible... simplemente no esta tan limpio pero ilegible no es.

    • @destrospider2222
      @destrospider2222 Год назад

      Es ilegible para simples mortales

    • @Piedra_YT
      @Piedra_YT 2 месяца назад

      Esta mal dentro del contexto de la sintaxis

  • @othersimpleuser2383
    @othersimpleuser2383 2 года назад +84

    Vaya, a veces uno implementa cosas que según nosotros en ese momento es mera cuestión de comodidad, luego va y resulta que tienen un nombre técnico 🤣🤣🤣
    Buen video.

    • @xHydra
      @xHydra Год назад +1

      x2 llevo toda la vida haciendo las cosas así y ahora me entero de que existe un nombre para ello jaja

  • @mlm1106
    @mlm1106 2 года назад +313

    Lo tomaste de otro video en inglés, creo haberlo visto hace no mucho. De igual manera es bueno recordarlo y mas difundirlo en nuestro idioma. Saludos !

    • @adrianpierrafuentes2130
      @adrianpierrafuentes2130 2 года назад +18

      Eso mismo me percate 🧐

    • @diegoveloper
      @diegoveloper  2 года назад +143

      Sii, que observadores xd, Flutter Mapp me dió el permiso para basarme en su video.

    • @juanmacias5922
      @juanmacias5922 2 года назад +54

      Pero eso es como decir que le copiamos el syntax a Dennis Ritchie, del lenguaje C, son practicas conocidas por muchas razones.

    • @ProyectoGD
      @ProyectoGD 2 года назад +51

      lo querían quemar y les cerró la boca xd

    • @4tre00
      @4tre00 2 года назад +6

      @@ProyectoGD literal jaj

  • @mauriciourdaneta3588
    @mauriciourdaneta3588 2 года назад +19

    chevere si tiene sentido porque las excepciones tienen la cualidad de frenar toda la ejecución del codigo cuando existe algún error buen método.🤗

    • @neolymoreno3256
      @neolymoreno3256 2 года назад +3

      Esto era lo que me hacía falta, jajaja gracias bro

    • @marlonturcios6005
      @marlonturcios6005 Год назад +3

      Justo tenia esa duda, y yo pensando que estaba mal porque ejecutaría la función de todas formas

    • @mauriciourdaneta3588
      @mauriciourdaneta3588 Год назад +1

      @@neolymoreno3256 Si de hecho se recomienda mayormente las excepciones que los propios condicionales porque fuerzan el código a diferencia de los condicionales que se solo ejecutan cuando se cumple una condición es decir si hay cierta informacion que no puede ser procesada por el código salta la excepción ignorando el código restante. Es un gusto ayudar a la comunidad.

  • @verdadero1980
    @verdadero1980 Год назад +5

    Eso lo estudié en Estructura de Datos. Así el código corre más rápido cuando tiene muchos datos sobrecargándolo

  • @sarahfortunes6361
    @sarahfortunes6361 2 года назад +30

    Tan sencillo que era y nunca lo vi de esta manera, muchas gracias :D

  • @vyperasylum8278
    @vyperasylum8278 Год назад +8

    También podemos usar Switch Statement y optimizar aun más la ejecución de nuestro código, debido a que solo necesitamos una variable para movernos por el índice de opciones a comparar. No es lo mismo que un "if", pero no deja de ser una máquina de estados que según en que estado se encuentre la variable de control, pues ejecuta una acción u otra.

  • @panadeero
    @panadeero 2 года назад +17

    Y dependiendo del lenguaje, puedes quitar los {} , como:
    if(!isUserActive)
    throw Exception(''User not active')

  • @rodiliorodriguez6921
    @rodiliorodriguez6921 Год назад +3

    Empecé a usar esto hace tiempo y definitivamente es un gran consejo para escribir código legible y escalable 👌🏻😎

  • @AlFredo-sx2yy
    @AlFredo-sx2yy 2 года назад +3

    y ahora con un debugger en vez de tener que entender el codigo, directamente me salto 3 instrucciones jne y soy usuario activo, pro y suscrito solo con cambiar un puntero. Gracias por la increible recomendacion de como no hacer software seguro!

  • @fele09
    @fele09 Год назад +1

    llevo haciendo esto por años y no sabía que tenía un nombre. solo que, exactamente como explicaste, es muy sencillo leer el algoritmo de esa forma. nunca pude explicar bien por que me gusta asi. ahora ya se w decirle a mis compas

  • @juanmacias5922
    @juanmacias5922 2 года назад +15

    Ademas de mas limpio, escuche que el procesador tiene que esperar para ver que es elegido, y haciendo operaciones constantes ayuda la velocidad del programa. O(1)

  • @xinoHITO
    @xinoHITO 2 года назад +7

    Buen video! Simple y claro!
    Si no quieres arrojar excepciones tambien podrías hacer return cuando quieras salirte del método.

    • @scanlux
      @scanlux Год назад +1

      El return rompería la ejecución de esa función?

    • @diegoveloper
      @diegoveloper  Год назад +1

      Si

  • @catrielcaruso1687
    @catrielcaruso1687 2 года назад +9

    Buenas Diego! Tengo un tema del que podrías hacer un video corto que podría ayudar a muchos. Es el error: 'Consider canceling any active work during "dispose" or using the "mounted" getter to determine if the State is still active'. Estaría bueno poder entender bien como solventarlo y entender bien el concepto de "mounted" y cuando usarlo y cuando nop. En mi caso me aparecio en muchos momentos, incluso en navegaciones sin controllers o setStates.

  • @yinheaven7868
    @yinheaven7868 2 года назад +5

    Corto, cómodo y fácil de entender esto si es un tutorial

  • @catrielcaruso1687
    @catrielcaruso1687 2 года назад +8

    Muy buen tips! Muchas gracias! Ya mismo lo voy a implementar en mis proyectos!

    • @catrielcaruso1687
      @catrielcaruso1687 2 года назад

      Estuve pensando que podrías hacer algún video de 5 o 10 minutos de como escribir mejor código en dart. Por ejemplo usar más late en las variables, o más el operador ? en las varibles y objetos y no usar tantos if preguntando si es null la variables para luego hacer algo. Creo que eso tips nos servirían mucho a los que estamos todo el día con dart.

  • @humbertomoli99
    @humbertomoli99 Год назад +1

    Estoy de acuerdo. Las cláusulas de guarda son una técnica útil para mejorar la legibilidad del código y evitar las condiciones anidadas. En lugar de tener una larga cadena de condiciones, se puede usar cláusulas de guarda para validar pre-condiciones y, en caso de no cumplirse, lanzar una excepción temprano. Esto permite una traza más clara de la lógica y hace que el código sea más fácil de entender y mantener. Además, también ayuda a reducir la posibilidad de errores y bugs en el código.

  • @elvisleon9695
    @elvisleon9695 Год назад +1

    Ya lo sabia (se ve mas bonito pero es mas lento), gracias por compartir conocimiento.

  • @VivesCloud
    @VivesCloud 2 года назад +1

    Muchas gracias, si cuando empecé a programar usaba esos if else, ahora ya no tanto y dependiendo de como hasta uso los switch case :)
    Muchas gracias por tu vídeo!!

  • @ZorMon
    @ZorMon 2 года назад +5

    Hay una construcción que está en casi todos los lenguajes y también puede servir en casos parecidos para dejar el código incluso más limpio: el switch case. En algunos lenguajes,como c, incluso se permiten expresiones en los case.

    • @rafaelsueyro7825
      @rafaelsueyro7825 2 года назад

      si, uno tiene a no usar switches pero suelen resolver situaciones que requieran usar muchas condiciones

    • @chinox1996
      @chinox1996 Год назад +1

      prueba rust, con los match (switch) casi nunca debes usar los if, y es muchisimo mas seguro

  • @Bedfford
    @Bedfford Год назад +2

    No se trata que los IF anidados sean mala práctica, ocurre que el ejemplo que expones está intencionalmente confuso. Es muy común el uso de códigos anidados en los IF y sobre todo en los ciclos. Los programadores con tiempo y práctica van descubriendo como ir optimizando el código y depende caso a caso. En particular, si el programador tiende a complicar el uso de los IF, es que le falta compreder el uso correcto de los operadores lógicos y pulir el razonamiento en álgebra de Boole.

  • @andreslugo9947
    @andreslugo9947 2 года назад +8

    No me parece que funcione en cada situación, les digo por qué.
    En el primer caso, si no se valida el primer if, nunca se va a llegar a la parte del codigo de adentro, en este caso, otros if.
    En el segundo caso, si no se valida el primer if, de igual manera se va a llegar al resto del código.
    Entonces suponiendo que el usuario no es activo, no está suscrito y no es ProUser:
    En el primer caso, las excepciones serían solamente 'Not a pro user'
    En el segundo caso, las excepciones serían 'User not active', 'User not subscribed' y por ultino 'Not a pro user'
    Corríjanme si estoy equivocado.
    Edit: no tiene sentido lo que dije, no conozco el lenguaje

    • @diegoveloper
      @diegoveloper  2 года назад +11

      El throw Exception rompe la ejecución, ya no continúa

    • @andreslugo9947
      @andreslugo9947 2 года назад +1

      @@diegoveloper Jajaja lo sientooo, pensé que era otra cosa, no conozco ese lenguaje

    • @claudiojmartinsg
      @claudiojmartinsg 2 года назад +3

      @@andreslugo9947 excelente, tenia la misma duda, ya comprendi gracias a esta explicacion.

    • @douglascrcg
      @douglascrcg 2 года назад +5

      Gracias, héroe. Entendí con tu comentario jajajaja. Tonto no es el que pregunta , si no el que se queda con la duda 😄

    • @alanolvera8182
      @alanolvera8182 2 года назад +1

      justo iba a decir lo mismo

  • @abrahamtamayo
    @abrahamtamayo 2 года назад +6

    La verdad es que para una condición siempre pensamos en cumplir la condición y no cumplirla no es un pensamiento normal .. pero OJALA hubiera visto antes este video .. tengo muy poco aplicando esta técnica ..

    • @marcelomarot4229
      @marcelomarot4229 Год назад

      Lo que hizo fue reescribir una función que hace una lógica AND como una lógica NOR a la que le niega las entradas, obteniendo la misma tabla de verdad al final. O sea se cumplen las mismas conexiones en ambos casos.

  • @leonardotaza2626
    @leonardotaza2626 Год назад +1

    Amigo haz un curso de java creeme que ayudarias mucho a la comunidad que pasa por profesores que solo "enseñan" pero sin vocación.

  • @vladimirgutierrez7
    @vladimirgutierrez7 Год назад

    Una maravilla de explicación. Conciso y al pie, muchas gracias Diego! Bendiciones!

  • @enriquealejandropinelonove2416

    Bravo eres el primero que enseña Defensive Coding.
    Pocos saben usarlo.

  • @giovannivasquezr.2133
    @giovannivasquezr.2133 2 года назад +3

    Pienso que serviría sí tienes excepciones cosa que no siempre sucede. Allí me parece más limpia la anidación

  • @davidlopercol
    @davidlopercol 2 года назад

    Excelente explicación, al grano y sin rodeos

  • @lucabarraud6484
    @lucabarraud6484 2 года назад +1

    Muy buen video, se agradece que hagas un ciclo sobre buenas prácticas o estilos de programación.
    Saludos.

  • @jeanmartinpachasvilla6640
    @jeanmartinpachasvilla6640 2 года назад +3

    simple y bueno, no sabía su nombre... CRACK

  • @pablofigueroa2345
    @pablofigueroa2345 2 года назад +7

    1:38 Corregime si es que estoy mal. El comando "showUserDashboard" en el primer método se ejecuta si las TRES CONDICIONES SON VALIDAS; mientras que en el segundo método se ejecuta siempre al finalizar las condiciones sin importar si son validas o negadas. Aunque el método esta bien, la ejecución de los códigos no son DOS FORMAS CON UN MISMO OBJETIVO sino que son dos códigos con diferentes funciones. En el segundo código deberíamos buscar una manera para que se siga cumpliendo la condición de mostrar "showUserDashboard" una vez las tres funciones son validas.
    PD: Repito, si me equivoco corregime. A primera vista es la manera en la que veo que funciona este código. Intentare codificarlo para ver si me equivoco en el proceso.

    • @diegoveloper
      @diegoveloper  2 года назад +11

      El throw Exception rompe el ciclo de ejecución

    • @yukariakiyama3059
      @yukariakiyama3059 Год назад

      @@diegoveloper Como seria eso? Terminaria con el procedimiento directamente?

    • @diegoveloper
      @diegoveloper  Год назад +1

      @@yukariakiyama3059 si, revisa sobre Excepciones, todos lenguajes de programación lo soportan

  • @cesarmaat
    @cesarmaat 2 года назад

    Excelente video, directo al punto sin tanto rollo

  • @Perberos
    @Perberos 2 года назад +1

    Haddooouuukkkeeeennnn
    es mi técnica de programación favorita, y eso que llevo casi 20 años escribiendo código fuente 😗

  • @gerardojmarroquin6434
    @gerardojmarroquin6434 2 года назад +3

    Podríamos usar un else -if, en ciertas situaciones no?

  • @MiauMichigan
    @MiauMichigan 2 года назад

    Buenísimo!!! Recién estoy empezando así que me viene super el consejo. Muchas gracias :)

  • @micorreo1972
    @micorreo1972 Год назад

    Es una técnica que uso desde hace más de 20 años (lenguajes bien viejos). No sabía que alguien se adjudicó autoría y le puso nombre.
    Bueno, también se puede usar en positivo en todo caso, sólo usa los conectores adecuados y ya.

  • @ioannisblougouras9083
    @ioannisblougouras9083 10 месяцев назад

    Aun recuerdo cuando una vez me dijeron que las Guard clause ya no se usaban que eran anticuadas 😆 cuando el código queda mas fácil y las guard clause apoyan mucho el fail fast principle

  • @golgiapparatus149
    @golgiapparatus149 2 года назад

    Esto no se me hubiese ocurrido, es muy ingeniosa tu solución. Nuevo sub con la campana activada.

  • @escarabajoescararriba9479
    @escarabajoescararriba9479 Год назад

    Gracias Diego, me ha gustado el vídeo, saludos :)

  • @rodrigojigena1884
    @rodrigojigena1884 2 года назад

    primer video tuyo que veo un genio total

  • @juliangarciamurillo3918
    @juliangarciamurillo3918 Год назад +1

    ¡Increíble!

  • @blackisblack22
    @blackisblack22 Год назад +1

    Hay mucha gente que programa esas aguilitas incluso llegando a más de 10 niveles de indentación.

  • @emanuelcano4443
    @emanuelcano4443 2 года назад

    Excelente Diegote , hoy me estaba enredando bastante en el laburo

  • @luis96xd
    @luis96xd 2 года назад +1

    Excelente video, muy bueno y bastante ilustrativo, gracias! 😁

  • @flaviocejas2324
    @flaviocejas2324 Год назад

    Se podría limpiar más sacando la llaves de los Ifs ya que es una sola línea. Excelente saludos!

  • @gabrielG279
    @gabrielG279 2 года назад

    pensé que ibas a tirar un switch o usar ternarios o algo así, pero me gustó el resultado, queda muy prolijo

  • @sombras_extranhas
    @sombras_extranhas 6 месяцев назад

    Esta bueno, pero solo es aplicable si tienes una sola funcion principal a la cual quieres llegar dentro de los ifs. Porque si tienes muchos ifs y cada combinacion de ifs y else requieren ejecutar una funcion distinta, no veo otra forma de seguir haciendo ifs anidados, o realizar if con varias condiciones en la misma linea

  • @ziggywzl
    @ziggywzl 2 года назад

    Me encanta como se ve el código así de ordenado y claro, y no un código hadouken

  • @canaljoseg0172
    @canaljoseg0172 6 месяцев назад

    Sabían que en la programación orientada objeto, los condicionales sólo debe usarse un caso modulares (como en el ejemplo mostrado) y no procesamiento.

  • @acostadc
    @acostadc 2 года назад +1

    Corrigeme si estoy equivocado. No conozco el lenguaje. 1) La primera logica es mas larga pero mostrara un error a la vez; es decir si el usuario no cumple con las 3 condiciones a la vez. Solo se mostrara o subscrito, o activo o pago. 2) La segunda logica es mas corta pero mostrara los 3 mensajes de errores en caso de cumplirse todos a menos que instruccion throw haga un salto. Concluyo que depende de lo que queramos adaptamos el codigo. Saludos....

    • @diegoveloper
      @diegoveloper  2 года назад +2

      hola, el throw Exception rompe el ciclo de ejecución, ya no evaluará las demás condiciones

  • @danmen1094
    @danmen1094 Год назад

    No es bueno dejarla por defecto al final en este caso, por que por alguna mala configuración de seguridad puede dar acceso.

  • @johnfriend2010
    @johnfriend2010 Год назад +1

    muy buenos consejos

  • @springprogramming
    @springprogramming 11 месяцев назад

    lo aprendí a la mala cuando en el trabajo me pidieron pasarle el SONARLINTER al proyecto

  • @estudiom142
    @estudiom142 2 года назад

    mee encanto! Salute desde Arg!

  • @vpale
    @vpale 2 года назад

    Increíble cuando vi la miniatura del video pensé que se iba a utilizar algo diferente al if, pero solo fue el if digamos al revés.

  • @nextdev1
    @nextdev1 Год назад

    imagino que en este caso que ninguna condicional debe validar nada por el lado negativo? porque que pasa si debes efectuar alguna validacion por ejemplo si el usuario no esta activo?

  • @Ordnas95
    @Ordnas95 Год назад +2

    No sean dogmaticos. Las guard clauses son un patrón, y por lo tanto tiene pros y contras. No todo código puede ser mejorado al usarlas.

  • @alejandroaparicioguerra1818
    @alejandroaparicioguerra1818 2 года назад

    muy buena explicacion gracias

  • @nicolasbaumtrog5671
    @nicolasbaumtrog5671 Год назад +1

    Buenisimo, para poder sacarse la costumbre de hacer un laberinto de if jajaj

  • @guzman6001
    @guzman6001 Год назад

    Sencillo, potente... Perfecto.

  • @signolivideos
    @signolivideos 2 года назад +1

    Breve y super util. Tome su buen like hombre

  • @jucls2002
    @jucls2002 2 года назад

    Si sigues necesitando un else... Aunque a lo mejor tu código funciona de una forma diferente y si funciona bien. Teóricamente si necesitas ese else para encapsular bien ya que estas suponiendo que lanzar el exception impide lanzar el show pero 'y si no'... Mejor deja el else al final para que se ejecute específicamente cuando ya las condiciones si o si no se ejecutaron. Es también como la diferencia entre else if y if. Si pones dos if se ejecutan los dos si tener en cuenta el uno del otro. Pero si pones un if y luego un else if se ejecutará uno de los dos o ninguno.

    • @diegoveloper
      @diegoveloper  2 года назад

      En realidad no supongo nada, el throw Exception o el lanzar excepciones, siempre rompen el ciclo de ejecución

    • @jucls2002
      @jucls2002 2 года назад

      Creo que llevas razón, perdona. Tengo que repasar este cuatri las excepciones en una asignatura que tengo. No sé porqué mi mente imagino que era algo propio de tu código y no algo nativo del lenguaje. Por eso creí esa suposición, gracias.

    • @diegoveloper
      @diegoveloper  2 года назад

      @@jucls2002 no hay problema, el lanzar excepciones debería funcionar igual en los distintos lenguajes, solo que tiene distinta sintaxis seguramente

  • @andreszabala3407
    @andreszabala3407 Год назад

    Video clave, muy bueno!

  • @elEmperador
    @elEmperador 2 года назад

    Nunca lo había pensado. Muy buen dato.

  • @juniorhsk16
    @juniorhsk16 2 года назад

    Excelente diego gracias por compartir conocimiento, saludos

  • @lilHoodRD
    @lilHoodRD 2 года назад

    Muy bueno! Gracias, a aplicarlo!

  • @roman-tp6sd
    @roman-tp6sd 2 года назад

    gracias Diego!

  • @manuelflorescalderon7179
    @manuelflorescalderon7179 2 года назад

    Fantástico, lo hiciste tan sencillo

  • @mariadc3917
    @mariadc3917 Год назад

    te dejo un super me gusta !gracias

  • @AbelQuispe
    @AbelQuispe Год назад

    Esto sirve para los casos.. Pero igual, buen aporte!

  • @santinoansaldi3983
    @santinoansaldi3983 2 года назад +2

    Entiendo el concepto y es muy bueno, pero puede ser que el código nuevo que se muestra en el video no ejecuta las mismas acciones que el primero?

    • @diegoveloper
      @diegoveloper  2 года назад +1

      Para este ejemplo debería ser el mismo resultado

    • @victormanuelfrancodev
      @victormanuelfrancodev 2 года назад +3

      Si, pero el chiste no es que ejecute o no ejecute lo mismo, es que sea más legible el código 👨🏿‍💻, código smells

  • @marcosMartinez-wm7bd
    @marcosMartinez-wm7bd 2 года назад

    Videazo!!!!!!

  • @sandgurumusic4953
    @sandgurumusic4953 2 года назад +1

    Joder, tras de hacer calistenia, también programa. Que grande Kass

  • @rodrigoluque1453
    @rodrigoluque1453 2 года назад

    Excelente, me suscribo 👍

  • @paullevy9824
    @paullevy9824 Год назад

    diego, te sigo por el thumbnail que te mandaste 🤣, Grande @diegoveloper!

  • @ricardoaravena2068
    @ricardoaravena2068 2 года назад

    Ufff. Que recuerdos...no les pasó que por probar el codigo y hacerlo rapido...despues lo "arreglo"

  • @yuniorbestardaroche1534
    @yuniorbestardaroche1534 2 года назад +1

    Si usas calculo proposicional, podrás hacer todas esas condicionales en una sola, porque una condicional es una proposición lógica

    • @diegoveloper
      @diegoveloper  2 года назад +1

      El tema es realizar una determinada acción de acuerdo a una condición

  • @guillermoriusech1647
    @guillermoriusech1647 2 года назад +1

    showUserDashboard no se estaría ejecutando siempre que llamamos a la funcion doSomething ?? Es decir.. si se cumple el primer if negado, showUserDashboard se ejecutaria igual ?

    • @diegoveloper
      @diegoveloper  2 года назад

      El throw Exception rompe el ciclo de ejecución

  • @facundoleonetti1916
    @facundoleonetti1916 Год назад

    Soy programador basico y algunas cosas no entiendo, o no vi, siempre se aprende algo, perooo mi pregunta es. el "Throw"....clausula es com o un break de funcion?. o un corte de control, que lo que hace es parar todo y decir, solo te muestro eso, o para que serviria?

    • @diegoveloper
      @diegoveloper  Год назад

      El throw exception termina el ciclo de ejecución, ya no se ejecuta lo que sigue del código, también se podría usar return

  • @xiao5002
    @xiao5002 2 года назад +1

    Está genial, lo había hecho a veces sin darme cuenta, pero en este caso si ocurre algún error y muestra un mensaje, la última función se ejecuta igual o no?

    • @diegoveloper
      @diegoveloper  2 года назад

      no, se rompe el ciclo de ejecución

    • @deivisquin1519
      @deivisquin1519 2 года назад

      No, si no cumple uno de ellos sale del método.

  • @mrDalien
    @mrDalien 2 года назад

    Es un método más viejo que el hilo negro. No sabía que lo habían bautizado.
    De todas maneras, es un excelente ejemplo para las nuevas generaciones.

  • @francocornejo8802
    @francocornejo8802 2 года назад

    muy bueno el video! me suscribo, ojala saques mas videos como este

  • @83ponchito
    @83ponchito Год назад

    Me gusto bastante muy bueno

  • @tincho15neem
    @tincho15neem 2 года назад +1

    Perdón por la corrección, pero no es un diseño correcto.
    La función que planteas está realizando dos cosas diferentes: chequear la condicion, y hacer algo.
    Lo correcto sería:
    void doSomething() {
    if (canDoSomething()) showUserDashboard();
    }

    • @diegoveloper
      @diegoveloper  2 года назад

      no entendí, compara el antes y después, ambas ejecutan lo mismo, ojo que el throw exception rompe el flujo de ejecución

  • @fernandoklein9741
    @fernandoklein9741 2 года назад

    Me encantó el tip, muchas gracias bro

  • @pringstom
    @pringstom 2 года назад +2

    osea practicamente en las clausulas ifs validamos el else y si no se cumple ningun else lanzamos el metodo.

    • @diegoveloper
      @diegoveloper  2 года назад +4

      Yes, y eso rompe la secuencia y no evalúa las otras condiciones

  • @marcomasieri9459
    @marcomasieri9459 2 года назад

    ¡Gracias!

  • @Cotredes
    @Cotredes Год назад

    También un elif podría ser útil!

  • @argenisjrg
    @argenisjrg 2 года назад

    ¡Qué buen truco! Quisiera preguntar: ¿en vez de poner exclamación y paréntesis a la condición no es más fácil escribir "if not"? Gracias.

    • @diegoveloper
      @diegoveloper  2 года назад +1

      Depende del lenguaje de programación, en este caso era Dart

    • @argenisjrg
      @argenisjrg 2 года назад

      @@diegoveloper Disculpa, es la costumbre de ver tantos videos de Python 😅 ¡Gracias!

  • @mauriciorodriguez3271
    @mauriciorodriguez3271 Год назад

    Cabe destacar que se debe agregar return para que al final la función showUserDashboard() no acabe ejecutado

    • @jhoan_garcia470
      @jhoan_garcia470 Год назад

      Sino estoy mal, al momento de lanzar la excepción, el sistema detiene la ejecución del método, prácticamente es un return pero más violento.

    • @diegoveloper
      @diegoveloper  Год назад

      correcto, como dice Jhoan, el throw Exception rompe el ciclo de ejecución

  • @PabloLopez-tz2zq
    @PabloLopez-tz2zq 2 года назад +2

    gracias me sirvio mucho, algun tip para las consultas SQL que son de un kilometro? Yo las parto en multiples lineas pero supongo eso no es buena practica xD

    • @diegoveloper
      @diegoveloper  2 года назад +1

      quizás pasarlo a vistas o store procedures

    • @motivaciontotal5310
      @motivaciontotal5310 2 года назад

      Pasarlas a varias líneas no es una mala practica, es mas, es aconsejado.

  • @einarpoisot9507
    @einarpoisot9507 2 года назад

    No es mejor poner compuertas and (&&) a los if en lugar de hacer esa cosas? De allí se ponen condicionales cuando algo se cumple y cuando no porque así (como el vídeo, el código que según mejoraste) lo que haces es que se cumpla algo por cada una de las cosas que no se cumplió pero antes de la supuesta mejora hacía una sola cosa con base a un orden jerárquico de lo que se cumple y lo que no, es decir son diferentes las funciones que hacen los códigos los que muestras en el vídeo, que bien pudiste usar else if para ello.

    • @diegoveloper
      @diegoveloper  2 года назад +1

      Puedes plantearlo aquí, como lo harías basado en el ejemplo? La idea es que cada condición que no se cumpla mande una alerta/mensaje/excepción diferente

  • @zurnu74
    @zurnu74 2 года назад

    Buena. Agradecido y Suscrito.

  • @osotumarido
    @osotumarido Год назад

    Gran dato.

  • @JoeX92
    @JoeX92 2 года назад +1

    O sea... Al final no es que el programa "irá más rápido" simplemente será mas fácil de entender... 🤔

  • @RoelLealA
    @RoelLealA 2 года назад

    Se podría utilizar el && y ya, o no?

  • @g_r_x_v
    @g_r_x_v 2 года назад

    Gracias bro, muy útil el consejo

  • @roulio7908
    @roulio7908 2 года назад

    I don't know what is this trend to say that else is bad but there is this everywhere on social media

  • @user-wp1ox9og9h
    @user-wp1ox9og9h 2 года назад

    Es una buena tecnica, pero hace que el programa pruebe todos los "if" sino se cumple el primero, segundo, etc, aunque en computacion sacrificamos una cosa por otra, pero no hay optimizacion perfecta.

    • @Ven2see
      @Ven2see 2 года назад

      Cómo quiera tendría que ejecutarlo.