Le pattern Dispatcher en Python

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

a marqué ce sujet comme résolu.
Auteur du sujet

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 !

I was a llama before it was cool

+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.

Auteur du sujet

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.

I was a llama before it was cool

+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
Auteur du sujet

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

Édité par nohar

I was a llama before it was cool

+0 -0
Auteur du sujet

J'avoue que contextlib.suppress, c'est le genre de truc qu'on ne présente jamais dans les tutos : un jour on tombe dessus, on se met à l'utiliser comme on respire et on n'y fait même plus attention. :D

I was a llama before it was cool

+0 -0
Auteur du sujet

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.

Édité par nohar

I was a llama before it was cool

+0 -0
Auteur du sujet

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.

Édité par nohar

I was a llama before it was cool

+0 -0
Auteur du sujet

Bonjour les agrumes !

La bêta a été mise à jour et décante sa pulpe à l'adresse suivante :

Merci d'avance pour vos commentaires.

Edit:

Je suis repassé sur l'introduction et les deux premières sections, en ajoutant un maximum de détails et de commentaires.

Édité par nohar

I was a llama before it was cool

+0 -0
Auteur du sujet

Bonjour les agrumes !

La bêta a été mise à jour et décante sa pulpe à l'adresse suivante :

Merci d'avance pour vos commentaires.

PS : Après l'avoir pas mal reformulé et détaillé, je viens de l'envoyer en validation. Les retours sont toujours les bienvenus !

Édité par nohar

I was a llama before it was cool

+0 -0
Auteur du sujet

Je vais plancher là-dessus et voir ce que je peux faire.

Edit : Bon je pense que je vais au moins schématiser le parcours de l'AST en ASCII pour commencer.

Édité par nohar

I was a llama before it was cool

+0 -0
Auteur du sujet

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.

I was a llama before it was cool

+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.

Édité par Gabbro

Hier, dans le parc, j’ai vu une petite vieille entourée de dinosaures aviens. Je donne pas cher de sa peau.

+2 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

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