Mentre mi piace l'idea di ridurre il codice della caldaia-piastra, sono profondamente sospettoso di strumenti come Moderna :: Perl e comune ::senso.
Il problema che ho con i moduli di questo tipo è che raggruppano un gruppo di comportamenti e nascondono nomi di lob con significati mutevoli.
Ad esempio, Modern::Perl
oggi consiste nell'abilitare alcune funzioni di perl 5.10 e l'utilizzo di stringhe e avvisi. Ma cosa succede quando Perl 5.12 o 5.14 o 5.24 escono con grandi novità, e la community scopre che dobbiamo usare il pragma frobnitz
ovunque? Will Modern :: Perl fornisce un insieme coerente di comportamenti o rimarrà "Moderno". Se MP si tiene al passo con i tempi, interromperà i sistemi esistenti che non mantengono il blocco dei requisiti del compilatore. Aggiunge test di compatibilità extra per l'aggiornamento. Almeno questa è la mia reazione a MP. Sarò il primo ad ammettere che il cromatico è circa 10 volte più intelligente di me e un programmatore migliore, ma non sono ancora d'accordo con il suo giudizio su questo problema.
common::sense
ha anche un problema di nome. Di chi è l'idea del buon senso? Cambierà nel tempo?
La mia preferenza sarebbe per un modulo che mi faciliti la creazione di un mio insieme di moduli standard e persino la creazione di gruppi di moduli/direttive correlati per attività specifiche (come la manipolazione di data, l'interazione con il database, l'analisi HTML, eccetera).
Mi piace l'idea di Toolkit, ma fa schifo per diversi motivi: utilizza i filtri di origine e il sistema macro è eccessivamente complesso e fragile. Ho il massimo rispetto per Damian Conway, e produce codice brillante, ma a volte va un po 'troppo lontano (almeno per uso di produzione, la sperimentazione è buona).
Non ho perso abbastanza tempo a digitare use strict; use warnings;
per sentire la necessità di creare il mio modulo di importazione standard. Se ho sentito un forte bisogno di caricare automaticamente un insieme di moduli/pragma, qualcosa di simile a toolkit che permette di creare gruppi di serie sarebbe l'ideale:
use My::Tools qw(standard datetime SQLite);
o
use My::Tools;
use My::Tools::DateTime;
use My::Tools::SQLite;
Toolkit viene molto vicino al mio ideale I suoi difetti fatali sono un fiasco.
Per quanto riguarda la scelta della direttiva, è una questione di gusti. Preferisco usare l'occasionale no strict 'foo'
o no warnings 'bar'
in un blocco in cui ho bisogno della possibilità di fare qualcosa che lo richiede, piuttosto che disabilitare i controlli sul mio intero file. Inoltre, IMO, il consumo di memoria è una falsa pista. YMMV.
aggiornamento
Sembra che ci sono molti (quanti?) Diversi moduli di questo tipo galleggiando CPAN.
- C'è latest, che non è più l'ultimo. Dimostra parte del problema di denominazione.
- Inoltre, uni::perl che aggiunge l'attivazione della parte unicode del mix.
- ToolSet offre un sottoinsieme delle capacità di
Toolkit
, ma senza filtri di origine.
- Includerò Moose qui, poiché aggiunge automaticamente
strict
e warnings
al pacchetto chiamante.
- Infine Acme::Very::Modern::Perl
La proliferazione di questi moduli e il potenziale di requisiti sovrapposti, aggiunge un altro problema.
Che cosa succede se si scrive codice come:
use Moose;
use common::sense;
Cosa pragma sono abilitati con quali opzioni?
'comune :: sense' sarebbe un'idea molto migliore se vissuta in/home/mlehmann/perl5/lib e non CPAN. – hobbs