Comment coder sans "if" grâce au polymorphisme

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 ม.ค. 2025

ความคิดเห็น • 52

  • @bontempellitheo
    @bontempellitheo 4 หลายเดือนก่อน +22

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

  • @MrRayoux
    @MrRayoux 4 หลายเดือนก่อน +2

    Super vidéo, un banger mon gars masterclass

  • @baptisteb8910
    @baptisteb8910 4 หลายเดือนก่อน +8

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

  • @splendidbeaver2027
    @splendidbeaver2027 4 หลายเดือนก่อน +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)

  • @AnthonyTurpinHome
    @AnthonyTurpinHome 4 หลายเดือนก่อน +2

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

    • @LaMaliceCode
      @LaMaliceCode  4 หลายเดือนก่อน +1

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

    • @silvio3461
      @silvio3461 4 หลายเดือนก่อน

      @@LaMaliceCode t'es ifophobe ????

  • @iCeCrimeFR
    @iCeCrimeFR 4 หลายเดือนก่อน

    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  4 หลายเดือนก่อน +1

      Merci pour ce retour !ça fait plaisir :)

    • @iCeCrimeFR
      @iCeCrimeFR 4 หลายเดือนก่อน +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 4 หลายเดือนก่อน +1

    Merci! Super clair 👌

  • @leomacias317
    @leomacias317 4 หลายเดือนก่อน +2

    Solide le mec !

  • @edouardcourty4267
    @edouardcourty4267 4 หลายเดือนก่อน

    Hyper intéressant, merci du tips !

  • @zwartepeat3552
    @zwartepeat3552 4 หลายเดือนก่อน

    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? 😂

  • @hegelmotokoua
    @hegelmotokoua 4 หลายเดือนก่อน +1

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

    • @LaMaliceCode
      @LaMaliceCode  4 หลายเดือนก่อน

      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 😓

  • @PhunkyBob
    @PhunkyBob 4 หลายเดือนก่อน +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".

  • @Husky_Passion
    @Husky_Passion 10 วันที่ผ่านมา

    en gros tu utilise une fonction qui elle même donne un résultat en fonction du type de l'argument

  •  4 หลายเดือนก่อน +2

    On va pas se mentir

  • @fredericmazoit1441
    @fredericmazoit1441 4 หลายเดือนก่อน +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 4 หลายเดือนก่อน +1

      Que Dieu te bénisse mon frère

    • @PhunkyBob
      @PhunkyBob 4 หลายเดือนก่อน

      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 4 หลายเดือนก่อน

      @@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 4 หลายเดือนก่อน

      Comment rendre le code encore plus abjecte 😂

    • @Woka972
      @Woka972 4 หลายเดือนก่อน

      @@rokibgyimah8675😂 excellent le commentaire

  • @jean-yvesmousso8662
    @jean-yvesmousso8662 3 หลายเดือนก่อน

    Je suggère d'utiliser les interfaces

  • @PierreSchinko
    @PierreSchinko 4 หลายเดือนก่อน +1

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

  • @OA-kx8om
    @OA-kx8om 4 หลายเดือนก่อน

    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  4 หลายเดือนก่อน

      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 !

    • @TheShmupExperiment
      @TheShmupExperiment 3 หลายเดือนก่อน

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

  • @LowaTangu242
    @LowaTangu242 4 หลายเดือนก่อน +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  4 หลายเดือนก่อน

      C’est exactement ça merci à toi !

  • @misterbalise
    @misterbalise 4 หลายเดือนก่อน

    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  4 หลายเดือนก่อน

      ç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 !

  • @tigidou3344
    @tigidou3344 3 หลายเดือนก่อน

    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  3 หลายเดือนก่อน

      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 ;)

  • @stephanehugues7850
    @stephanehugues7850 4 หลายเดือนก่อน +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  4 หลายเดือนก่อน +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 4 หลายเดือนก่อน

      tt à fait, c'est de la branlette

    • @warfielko
      @warfielko 4 หลายเดือนก่อน +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 4 หลายเดือนก่อน +1

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

    • @bossgd100
      @bossgd100 4 หลายเดือนก่อน

      @@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 ;)

  • @tylerdurden-s2y
    @tylerdurden-s2y 2 หลายเดือนก่อน

    vive les if et les goto. 😁

  • @warfielko
    @warfielko 4 หลายเดือนก่อน +1

    Perso j'appelle ça un pattern strategy

  • @iwokssama4772
    @iwokssama4772 3 หลายเดือนก่อน +1

    Clean Code + Solid 😋Je partage

  • @tigidou3344
    @tigidou3344 3 หลายเดือนก่อน

    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.

  • @nicot136
    @nicot136 4 หลายเดือนก่อน

    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  4 หลายเดือนก่อน

      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 4 หลายเดือนก่อน

      ​@@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.