Comment coder sans "if" grâce au polymorphisme

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

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

  • @bontempellitheo
    @bontempellitheo 3 месяца назад +22

    Parfait pour les gens comme moi qui déteste les conifères je recommande

  • @AnthonyTurpinHome
    @AnthonyTurpinHome 3 месяца назад +2

    Une vidéo banger comme d hab. Merci d être revenu Lamalice !

    • @LaMaliceCode
      @LaMaliceCode  3 месяца назад +1

      Merci ! A un moment donné, les "if" ça dégage

    • @silvio3461
      @silvio3461 3 месяца назад

      @@LaMaliceCode t'es ifophobe ????

  • @splendidbeaver2027
    @splendidbeaver2027 3 месяца назад +8

    Ok sur la theorie, dans la pratique, commencez par un bon if else des familles (plus rapide et optimisé), meme si pas solid et si besoin refacto par la suite, si besoin (spoil : quasiment jamais besoin)

  • @MrRayoux
    @MrRayoux 3 месяца назад +2

    Super vidéo, un banger mon gars masterclass

  • @iCeCrimeFR
    @iCeCrimeFR 3 месяца назад

    Très bonne vidéo!
    Et 200 abonnés de plus entre le moment où j’ai vu cette vidéo (samedi dernier) et ce mardi donc chapeau bas!

    • @LaMaliceCode
      @LaMaliceCode  3 месяца назад +1

      Merci pour ce retour !ça fait plaisir :)

    • @iCeCrimeFR
      @iCeCrimeFR 3 месяца назад +2

      @@LaMaliceCode Plaisir partagé!
      Vu que le sujet est abordé dans la vidéo, je confirme qu’une vidéo sur les principes SOLID serait une excellente idée!

  • @maax-san
    @maax-san 3 месяца назад +1

    Merci! Super clair 👌

  • @baptisteb8910
    @baptisteb8910 3 месяца назад +7

    Pour éviter les if ... else ... on peut utiliser un match ... case ... 😂
    Trop cool les polymorphisme !

  • @edouardcourty4267
    @edouardcourty4267 3 месяца назад

    Hyper intéressant, merci du tips !

  • @leomacias317
    @leomacias317 3 месяца назад +2

    Solide le mec !

  • @hegelmotokoua
    @hegelmotokoua 3 месяца назад +1

    T'utilise quel outils pour enregistrer l'écran avec la caméra?

    • @LaMaliceCode
      @LaMaliceCode  3 месяца назад

      J'ai utilisé un truc qui s'appelle Loom pour cette vidéo, j'ai une version gratuite pendant 14 jours. Sinon avec le macbook j'utilise quicktime et je me crée meeting un google meet ou je partage mon écran et je peux avec l'OS intégrer ma caméra sur mon partage d'écran 😓

  • @zwartepeat3552
    @zwartepeat3552 3 месяца назад

    J’adore et oui une vidéo sur les principes solid serait top! Par contre tu kiffes vraiment python ou y’a moyen de faire avec un autre langage? 😂

  •  3 месяца назад +2

    On va pas se mentir

  • @fredericmazoit1441
    @fredericmazoit1441 3 месяца назад +2

    Oui cette technique fonctionne mais ce n'est qu'un cas particulier d'une technique plus large.
    Si on a un code du type (pardon, je ne sais pas faire d'indentation dans un commentaire youtube).
    def toto(n):
    if n==0: return 2
    elif n==1: return 12
    elif n==2: return 47
    on peut le remplacer par
    def toto(n):
    t=[2, 12, 47]
    return t[n]
    En gros, on stock utilise une indirection pour faire la même chose.
    Dans la liste précédente, rien n'empêche de mettre des fonctions.
    Ça règle le problème des if mais ça ne règle pas le fait qu'il faut maintenir la liste des fonctions.
    Une solution est de déplacer l'information pertinente pour le « if » DANS l'argument.
    Pour le premier exemple, on peut faire un truc du genre
    def toto(n):
    return n[1]
    Qu'on peut appeler par toto( (2, 47) ).
    On peut évidemment considérer un couple dont le second membre est une fonction et faire
    def aire(s):
    return s[1](s)
    On peut aussi faire des structures ou des classes.
    Bref, il y a plein de techniques.

    • @rokibgyimah8675
      @rokibgyimah8675 3 месяца назад +1

      Que Dieu te bénisse mon frère

    • @PhunkyBob
      @PhunkyBob 3 месяца назад

      Je ne suis pas sûr de bien comprendre. Dans votre cas, on ne calcule pas uniquement le résultat qui nous intéresse, mais tous les résultats possibles pour à la fin renvoyer uniquement le bon ?
      En terme de temps de calcul, ça me semble pas terrible...

    • @fredericmazoit1441
      @fredericmazoit1441 3 месяца назад

      @@PhunkyBob En ce qui concerne l'optimisation sur le premier if, passer de la version 1 à la version 2 (celle avec le premier tableau), c'est le genre de chose que fait gcc en -O3. Il suffit de regarder l'assembleur produit. Donc j'imagine que ça doit être totalement débile.

    • @driiade6311
      @driiade6311 3 месяца назад

      Comment rendre le code encore plus abjecte 😂

    • @Woka972
      @Woka972 3 месяца назад

      @@rokibgyimah8675😂 excellent le commentaire

  • @PhunkyBob
    @PhunkyBob 3 месяца назад +1

    Si les objets dont on souhaite calculer l'aire ne sont fonctionnellement pas tous un sous ensemble de "Shape", on peut utiliser les "Protocols" à la place des "ABCs".

  • @LowaTangu242
    @LowaTangu242 3 месяца назад +3

    Je ne vais pas regarder la vidéo mais commenter le titre, en disant ce qui suit :
    le titre ne devrait pas être comment coder sans if
    Mais plutôt comment ne plus utiliser le if pour décider quel type ou sous type d’algorithme on exécute.
    Le if n’est pas fait pour ça.

    • @LaMaliceCode
      @LaMaliceCode  3 месяца назад

      C’est exactement ça merci à toi !

  • @iwokssama4772
    @iwokssama4772 2 месяца назад +1

    Clean Code + Solid 😋Je partage

  • @tylerdurden-s2y
    @tylerdurden-s2y Месяц назад

    vive les if et les goto. 😁

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

    Pourquoi tu utilises Python avec les types (qui seront totalement ignoré quand le code sera bytecodé) ? Dans le sens, pourquoi ne pas aller avec un autre langage ?

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

      Hello merci pour ton commentaire ! J'avoue que c'est une raison plus "professionnelle" car je suis dans la data, et on y fait beaucoup de Python. Sa syntaxe est super simple, proche du pseudo-code, ce qui rend le code très lisible et donc "clean codable" facilement ;)

  • @misterbalise
    @misterbalise 3 месяца назад

    Hello, dans ce cas precis, ca serait pas plus simple un bête dictionaire avec en index le nom de la forme et en valeur des lambdas qui font le calcul ?

    • @LaMaliceCode
      @LaMaliceCode  3 месяца назад

      ça marche très certainement ! Il y a toujours 1 000 manières différentse de résoudre un même problème, c'est ça qui est beau :) Mais là c'était vraiment juste un exemple pour montrer le principe du polymorphisme !

  • @warfielko
    @warfielko 3 месяца назад +1

    Perso j'appelle ça un pattern strategy

  • @jean-yvesmousso8662
    @jean-yvesmousso8662 2 месяца назад

    Je suggère d'utiliser les interfaces

  • @PierreSchinko
    @PierreSchinko 3 месяца назад +1

    100 if, ça fait beaucoup trop 🤣🤣🤣🤣
    Bon, mais c'est quand même un titre putaclic 🤣🤣

  • @stephanehugues7850
    @stephanehugues7850 3 месяца назад +2

    21 lignes contre 47. Vous doublez le nombre d'instructions au final. Mais pas de problème la "responsabilité" de cela est renvoyée à la machine qui devra trimer 2 x plus pour exécuter votre code. 😅

    • @LaMaliceCode
      @LaMaliceCode  3 месяца назад +2

      Ici je ne parle que de principes Clean Code et Solid. La performance d’un code est évidemment différente de sa lisibilité et de sa maintenance ! Mais tu as raison oui, si la performance était l’objectif de cette chaîne je ferais fausse route :) Bonne journée !

    • @bossgd100
      @bossgd100 3 месяца назад

      tt à fait, c'est de la branlette

    • @warfielko
      @warfielko 3 месяца назад +1

      @@bossgd100 rappelle moi de ne pas t'embaucher. Alors ok, pour une todolist c'est too much, mais dans le cadre pro, sur une app scalable sans effet de bord (architecture hexagonale par exemple ), c'est l'objectif. Peu importe le nombre de lignes de code

    • @driiade6311
      @driiade6311 3 месяца назад +1

      ​@@warfielkoc est exactement ça.
      Trop de mauvais dev qui te pondent un truc imbuvable et inmaintenable.

    • @bossgd100
      @bossgd100 3 месяца назад

      @@driiade6311 on se rassure comme on peut avec le dernier pattern du nouveau gourou à la mode. C'est vrai que le code était mbuvable et inmaintenable avant la sortie du livre clean code et l'invention de solid ;)

  • @OA-kx8om
    @OA-kx8om 3 месяца назад

    t'as résumé en 5 minutes un concept simple que mes profs ont toujours réussi à rendre fumeux
    t'aurais des exercices de refactoring à conseiller ?

    • @LaMaliceCode
      @LaMaliceCode  3 месяца назад

      Merci ça fait plaisir, content que ça t'es utile :) Il y a cet exemple qui est tiré livre de Martin Fowler "Refactoring, improving the design of existing code" : github.com/emilybache/Theatrical-Players-Refactoring-Kata/tree/main/python. C'est un exo pas mal pour le polymorphisme, qui peut te faire sortir des class StandardBonus, BigBonus, Audience... Je t'en dis pas plus. D'ailleurs sur ce repo de Emily Bache, il y a tout plein de Kata pour s'amuser !

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

      Le refactoring ça se fait sur une base de code conséquente ; on ne peut pas en faire "des exercices".

  • @nicot136
    @nicot136 3 месяца назад

    Dans ce cas précis, je préfère 3 if. Plus lisible que 3 classes, pas besoin de 3 classes stockées dans la heap (donc + de travail pour le GC et + de poids dans la ram).
    Et pour éviter les suprises en prod, un bon test unitaire, ça évite de serrer les fesses à chaque modification.
    Mais sinon ça permet d’expliquer simplement le pattern en lui même. Pour davantage de possibilités et si il y a de l’ioc pourquoi pas, sinon peu d’intérêt dans ce cas précis.

    • @LaMaliceCode
      @LaMaliceCode  3 месяца назад

      C'est sûr qu'avec les bons tests unitaires on est à l'abri ! Côté Heap / Performance, j'avoue m'y connaître que très peu. L'idée était vraiment de montrer le principe avec un exemple compréhensible. Merci pour le commentaire en tout cas !

    • @driiade6311
      @driiade6311 3 месяца назад

      ​@@LaMaliceCode tkt ils ont tjrs ca comme argument. L opti.
      Et apres tu reprends un projet a 40 milliard de if qui tourne presque plus.
      Et toi tous tes projets a 40 milliard de class y a jamais eu de soucis.
      C est du vecu.
      Ca devient insupportable de lire ça.
      Bref gg pour le video.

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

    Faut relativer avec SOLID, des fois, c'est vraiment long et pénible de suivre la méthode qui appel l'autre qui appel l'autre qui appel l'autre qui finalement, n'était pas celle là mais l'autre... Quand cela devient compliqué, là tu sépares.