Comment coder sans "if" grâce au polymorphisme

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

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

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

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

  • @splendidbeaver2027
    @splendidbeaver2027 Месяц назад +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 Месяц назад +2

    Super vidéo, un banger mon gars masterclass

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

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

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

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

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

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

    • @silvio3461
      @silvio3461 Месяц назад

      @@LaMaliceCode t'es ifophobe ????

  • @iCeCrimeFR
    @iCeCrimeFR Месяц назад

    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  Месяц назад +1

      Merci pour ce retour !ça fait plaisir :)

    • @iCeCrimeFR
      @iCeCrimeFR Месяц назад +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!

  • @edouardcourty4267
    @edouardcourty4267 Месяц назад

    Hyper intéressant, merci du tips !

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

    Merci! Super clair 👌

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

    Solide le mec !

  • @fredericmazoit1441
    @fredericmazoit1441 Месяц назад +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 Месяц назад +1

      Que Dieu te bénisse mon frère

    • @PhunkyBob
      @PhunkyBob Месяц назад

      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 Месяц назад

      @@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 Месяц назад

      Comment rendre le code encore plus abjecte 😂

    • @Woka972
      @Woka972 Месяц назад

      @@rokibgyimah8675😂 excellent le commentaire

  • @zwartepeat3552
    @zwartepeat3552 Месяц назад

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

  • @PhunkyBob
    @PhunkyBob Месяц назад +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".

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

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

    • @LaMaliceCode
      @LaMaliceCode  Месяц назад

      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 😓

  • @tigidou3344
    @tigidou3344 27 дней назад

    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  26 дней назад

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

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

    Clean Code + Solid 😋Je partage

  •  Месяц назад +2

    On va pas se mentir

  • @misterbalise
    @misterbalise Месяц назад

    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  Месяц назад

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

  • @nicot136
    @nicot136 Месяц назад

    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  Месяц назад

      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 Месяц назад

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

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

    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  Месяц назад

      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 Месяц назад

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

  • @LowaTangu242
    @LowaTangu242 Месяц назад +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  Месяц назад

      C’est exactement ça merci à toi !

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

    Je suggère d'utiliser les interfaces

  • @stephanehugues7850
    @stephanehugues7850 Месяц назад +1

    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  Месяц назад +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 Месяц назад

      tt à fait, c'est de la branlette

    • @warfielko
      @warfielko Месяц назад +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 Месяц назад

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

    • @bossgd100
      @bossgd100 Месяц назад

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

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

    Perso j'appelle ça un pattern strategy

  • @tigidou3344
    @tigidou3344 27 дней назад

    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.

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

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