Le pattern Dispatcher en Python

Ou comment soigner la flemme par l'élégance

a marqué ce sujet comme résolu.

Tout le monde se secoue ! :D

J'ai commencé (il y a 9 minutes) la rédaction d'un tutoriel au doux nom de « Le pattern Dispatcher en Python » et j'ai dans l'objectif de proposer en validation un texte aux petits oignons. Je fais donc appel à votre bonté sans limite pour dénicher le moindre pépin, que ce soit à propos du fond ou de la forme. Vous pourrez consulter la bêta à votre guise à l'adresse suivante :

Merci !

+2 -0

Je n'ai pas encore eu le temps de lire en profondeur et me suis donc contenté de le survoler et de regarder les exemples.

Le tout semble vraiment clair, et les exemples pertinents et faciles à prendre en main. Peut-être que l'introduction pourrait juste décrire un peu plus longuement le pattern en question.

Merci.

Il faut savoir que j'ai compilé ce tuto à partir de plusieurs billets que j'étais en train de provisionner pour les futures tribunes libres, donc ça ne m'étonnerait pas qu'il y ait des choses à revoir sur la forme (peut-être adopter un ton plus formel ?) tant que sur le fond (rajouter plus de détails).

En introduction il faudrait sûrement que je prévienne que je décris là un pattern que je n'ai piqué nulle part, mais plutôt un truc de mon propre cru que j'ai fini par identifier et implémenter à force de le répéter au fil des ans.

+0 -0

Ce n'est pas un reproche mais juste pour être sûr que tu en es conscient, le tutoriel est s'adresse à des personnes ayant de bonnes connaissances en Python (ou un autre langage de programmation). D'ailleurs, tu mettrais quoi comme pré-requis ? :)

+0 -0

Oui c'est clairement un sujet avancé en Python (c'est pour ça que j'étais parti sur des billets de TL à la base plutôt qu'un tuto).

Comme pré-requis, pour utiliser la classe Dispatcher, je dirais qu'il faut simplement être à l'aise en POO (comme pour utiliser n'importe quel pattern en fait).

Sinon pour comprendre comment j'ai implémenté mes mixins, ça demande :

  • De savoir ce qu'est un mixin, :)
  • De comprendre ce qu'est une métaclasse et à quoi ça sert,
  • De ne pas avoir peur devant la définition d'un décorateur (même si les décorateurs définis dans le tuto sont très basiques).
+0 -0

Tu veux dire mettre un Warning pylint sur with suppress(...): ?

Je suis pas sûr que ça vaille le coup. C'est vraiment utile dans pas mal de cas, donc je ne considère pas ça comme un truc à déprécier. Au contraire, ça allège le code en faisant gagner au moins 3 lignes :

1
2
3
4
5
try:
    # some code
    pass
except SomeError:
    pass

Versus.

1
2
3
with suppress(SomeError):
    # some code
    pass

PS : Ah ! Ou bien tu veux dire détecter les except SpamError: pass pour suggérer l'usage de suppress ? Je suis pas super chaud non plus parce que l'utilisation de suppress a peut-être un impact significatif en perfs.

+0 -0

Bon je viens de faire une relecture attentive. Sur la forme, c'est franchement brutal, mais au moins le contenu est là.

Je vais l'étoffer et l'aérer en même temps, en détaillant au maximum ce qui se passe entre les exemples.

+0 -0

Je vois que la proposition d'un gif n'a pas l'air de satisfaire tout le monde, pourtant ça me semble une bonne idée pour montrer comment s'exécute le Visitor sur un arbre syntaxique (c'est schématisé dans le Dragon Book, ok, mais tout le monde n'a pas un Dragon Book à portée ni forcément envie de le lire).

Est-ce qu'il y a une raison particulière ? Je suis preneur de toutes les idées pour rendre le tuto clair.

+0 -0

J'ai lu le tuto. Franchement, je ne suis pas mauvais en python, à défaut d'être bon. Typiquement, je suis capable de lire le tuto d'entwanne, mais il m'apprend beaucoup de chose. Ton tuto est un bon gros cran au dessus. C'est pas un truc ou une partie en particulier qui me bloque, c'est un succession de truc vaguement compris, et au final je finis par me rendre compte que je ne pige pas.

Ce n'est pas un problème en soi, tant que tu en es conscient. Si tu veux une relecture de lisibilité par quelqu'un ayant un niveau limite, recontacte-moi lorsque le tuto aura pris une forme proche de celle prévu. :)

Bonne chance pour la rédaction. Et désolé de ne pas pouvoir être plus constructif.

+2 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte