Decoratori, una guida rapida e un dubbio irrisolto

miscCosa non si trova sul Web, per esempio questo post —Python Decorator Cheatsheet— che li rende facili-facili, pronti da copincollare –o quasi.
L’ha scritto un pythonista tosto, lo seguo su Twitter, è OK. Ma oggi non ne sono tanto sicuro. Provo a giustificarmi.

Quando il mondo era giovane le cose erano più semplici. Non ce l’ho più (chissà dov’è finito) ma ricordo che il K&R potevi portarlo in tasca e aveva un numero di pagine ragionevole, roba che oggi non sarebbe immaginabile. E anche i linguaggi che usavi davvero (Fortran, Basic) erano orientati agli umani.

Oggi invece…
Ultimamente sono stato coinvolto in discussioni del tipo “conviene usare <linguaggio_X> o non sarebbe meglio <linguaggio_Y> che ha pure <feature Ultra-über-plus> e <altra_ancora_più_pheega>?
E, da quello che ho sentito, senza pretesa alcuna di considerarlo una realtà statistica reale, le opinioni sono le più varie, una a testa. Ci sono cose vecchie che funzionano e non si toccano (PHP, Python <=2.6, Visual Basic), altre invece si rifanno perché _________ (boh!?). C’è chi ha dato per morto questo o quel linguaggio e invece conosco chi lo usa (archeologi se volete ho i riferimenti).

decoratorsTorno ai decoratori: la mia posizione è forse errata ma li considero dannosi, o quanto meno inutili. Specie per come li introduce il post di Daniel.
Ovviamente dipende da quanto sei bravo e esperto, da cosa devi fare ma per le cose ordinarie non sono necessari. E considero una prassi pessima il copiare qualcosa trovato in giro perché funziona. Se non capisci come, se non riesci a farlo tuo, modificandolo, stravolgendolo per quanto necessario, va a finire che poi dipendi da lui, come per il vecchio codice Fortran.
La mia opinione non è solo mia, vedi la prima risposta al primo commento:

Unlike the rest of the Python core API, the syntax for writing decorators is confusing. Whether or not I understand what is going on is moot, that there are several libraries designed to simplify writing them is evidence that they are confusing and unnecessarily verbose.

Ma c’è anche chi:

I wrote a post a few week ago explaining how to write a decorator, for those looking for a short explationation of how they work: Python: Tips, Tricks and Idioms – Part 2 – Decorators and Context Managers

Probabilmente c’è anche una Part 1 –indagine lasciata al lettore.

E potrei continuare ancora questo rant personale (spero solo personale) ma ho un’altra notizia: L’unico linguaggio per cui non si trovano controindicazioni è Racket, restano tutti a bocca aperta e poi ti guardano in quel certo modo (sarà pericoloso?) 😉

OK, torno alle cose serie; questo post non leggetelo 😀

Posta un commento o usa questo indirizzo per il trackback.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: