2009-11-23 5 views
5

Comprendo che Smart :: Comments non deve essere utilizzato nel codice di produzione, poiché si tratta di un filtro di origine.Che problemi dovrei avere se utilizzo Smart :: Comments in development code?

Tuttavia, ho utilizzato Smart::Comments nel mio codice di sviluppo e quindi commentando la riga "use" prima di inviare il codice alla produzione.

Dato che lo userò nel mio codice di sviluppo, di cosa dovrei preoccuparmi in particolare? Ho cercato su Internet e non ho trovato motivi per cui dovrei essere preoccupato, tranne che i filtri di origine sono "una cattiva idea" o "cattiva" o che non dovrebbero mai essere usati nel codice di produzione.

UPDATE: Ora sto utilizzando una chiave vincolante nel vim per implementare l'approccio di Sinan Unur:

map <Leader>c <Esc>:!perl -MSmart::Comments %<CR> 
+1

Vedere anche il wiki della comunità di daotoad che ha aperto dopo aver risposto a questa domanda: http://stackoverflow.com/questions/1785852/why-are-perl-source-filters-bad-and-when-is-it-ok -to-use-li. –

+0

Vedere l'articolo [2015 Perl Advent su Smart :: Commenti] (http://www.perladvent.org/2015/2015-12-11.html) –

risposta

4

filtri Source sono male problematico perché utilizzano un parser imperfetta di riscrivere il codice. Tutto funziona alla grande, purché il filtro gestisca il codice che lo alimenta.

Nel momento in cui aggiungi qualcosa che rompe il filtro, l'intero sistema si autodistrugge e ottieni bug bizzarri.

I filtri di origine confondono anche il debugger, che può essere un problema - se si utilizza il debugger.

2

Non ho un'opinione sulla parte dei filtri di origine. Ma guarda la sinossi di Smart::Comments. Potrebbero essere intelligenti, ma quello che si finisce non può essere definito "commenti". Se hai bisogno di una barra di avanzamento, vai avanti, aggiungine uno esplicitamente. Se hai bisogno di commentare qualcosa, fallo in modo che sia il prossimo a leggere la tua fonte per capire cosa intendi.

1

Smart :: Commenti è appositamente scritto in modo tale che quando si commenta "use Smart :: Comments" si tratterebbe solo di commenti, quindi il programma non è interessato. Altri moduli hanno problemi più seri, come quando non sarai in grado di ottenere il numero esatto di errori.

9

preferisco non mettere:

use Smart::Comments; 

nel mio codice. Quando ho usate davvero Smart::Comments, invoco lo script utilizzando:

$ perl -MSmart::Comments test.pl 

In questo modo, non v'è alcuna possibilità Smart::Comments saranno utilizzati nel codice di produzione.

+1

++! Ho spesso guardato S :: C e ho desiderato di non credere nell'astinenza totale dai filtri di origine. Questo fornisce un modo sicuro per usare S :: C - ora potrei effettivamente usarli. – daotoad

+0

Grazie! Buon approccio –

5

Sono un grande fan di Smart :: Comments, e viene chiamato in tutto il nostro codice, sviluppo e copie di produzione. Raramente lo uso per le barre di avanzamento, principalmente per asserzioni e output di debug.

Tuttavia, la pratica è quello di tirare in utilizzando il modulo:

use Smart::Comments -ENV; 

Se i Smart_Comments variabile d'ambiente non è impostata, intelligente :: commenti è completamente inerte.

Il meglio di entrambi i mondi.

+0

Grazie! Ancora un altro modo per farlo. –

Problemi correlati