2012-07-20 9 views
8

Sto utilizzando il seguente comando per testare il mio codice Perl:Ci sono dei moduli che mi mancano per aiutarmi a scrivere codice migliore?

perl -MB :: :: Lint StrictOO -MO = Lint, tutti, oo -M-circolare :: richiedono -Mwarnings -M-indiretti: : metodo -Mwarnings :: unused -c $ file

Su un sistema con una versione perl inferiore a 5.10 sto anche usando uninit.

Sto anche utilizzando Perl :: Critic e Perl :: Tidy e ho impostato i file rc appropriati a mio piacimento.

Questi moduli hanno svolto un ottimo lavoro aiutandomi a rompere alcune cattive abitudini che ho imparato durante il primo apprendimento di perl.

Ci sono altri moduli o direttive che mi tireranno su dritto e stretto quando mi incasina?

Utilizzando i test, sono stati evidenziati la famiglia di moduli Test :: * e alcuni buoni libri. Questa nuova informazione mi ha indotto a riconsiderare alcune ipotesi sulla relazione tra test e costruzione di abilità di codice. Questi sono tutti apprezzati e già studiati e messi a frutto.

Mi sembra che queste siano due parti separate di un tutto. 'perl -c', Perl :: Critic e Perl :: Tidy aiutano tutti durante il processo di scrittura del codice e prima dell'esecuzione del codice. Devel :: Cover, Devel :: NYTProf e Test avvengono durante e dopo l'esecuzione del codice.

Il buon sviluppo impone un processo iterativo, quindi i test verranno eseguiti e il codice verrà sviluppato più e più volte, ma abbiamo ancora questa separazione.

Mi sembra che l'attenzione nelle risposte sia stata sul 'durante e dopo l'esecuzione' del codice. Ancora una volta, questo è molto apprezzato. Posso presumere di avere la parte "scrittura e pre-esecuzione" piuttosto bene allora? Almeno per quanto riguarda i pragma, i moduli e le utilità.

+2

Potrebbe essere il momento di apprendere come testare: Altro se non lo si è già fatto. Allenarti a scrivere dei test prima del loro codice obiettivo ti incoraggerà a codificare in blocchi più piccoli, più gestibili e spesso più generali. E testare il tuo codice deve portare a un codice migliore, se una definizione di migliore è meno bug. Molti dei moduli Test :: * forniscono controlli aggiuntivi senza troppi sforzi. – DavidO

+0

Uso molto la serie Test :: di moduli ... Non avevo considerato i test come un modo per migliorare le mie capacità di codifica. Uso DistZilla ogni volta che è possibile e questo rende l'utilizzo dei test molto semplice, di cui traggo vantaggio. Sembra che ho bisogno di tornare indietro e iniziare a valutare i moduli Test :: sotto una nuova luce. – harleypig

+0

Ci sono anche dei bei libri là fuori. Ordine superiore Perl. Perl moderno. (Entrambi disponibili gratuitamente online, legittimamente.) Ce ne sono molti altri, ma quei due sono buoni libri per imparare un approccio illuminato a Perl. – DavidO

risposta

4

Sono un po 'preoccupato che tu stia usando Perl 5.9. Per due ragioni.

In primo luogo, è un po 'vecchio. 5.9.0 è stato rilasciato nel 2003 e 5.9.5 (l'ultima versione nella serie 5.9.x) è stato rilasciato nel 2007. Da allora sono state rilasciate diverse versioni di Perl di alta qualità.

In secondo luogo (e, soprattutto), 5.9 è una versione di sviluppo instabile di Perl. 5.9 è fondamentalmente la serie di esperimenti che alla fine ha portato a Perl 5.10.0. L'unica ragione per usarlo è testare che 5.10 sarà una versione stabile di Perl. Nessuno dovrebbe usarlo affatto ora.

+0

:] Sono d'accordo, nessuno dovrebbe * usare * meno di 5.10 ... probabilmente anche 5.14 ... tuttavia ciò che dovrebbe essere e ciò che è sono di solito due cose diverse. Lavoro molto sul codice legacy. Alcuni dei server su cui lavoro continuano a utilizzare 5,004. – harleypig

+0

Giusto. Posso (solo) capire perché potresti usare una versione dolorosamente antica di Perl. Ma non riesco a capire perché useresti una versione di sviluppo instabile. –

+0

Le mie scuse ... Non sto usando 5.9 da nessuna parte di cui sono a conoscenza ... quando ho cercato perché uninit stava fallendo in una scatola con 5.14 ho scoperto che Uninit è stato rimosso in 5.10. Il codice che genera il comando controlla '$] <5.010', quindi tendo a pensare 'qualsiasi cosa 5.9 e sotto'. Scusa per la confusione su questo. – harleypig

2

Sembra che tu non stia testando il tuo codice, semplicemente controllando che verrà compilato. Ti suggerisco di guardare Test :: More (che rende la scrittura di test reali semplici e facili), Test :: Class (che rende più facile gestire suite di test molto grandi) e Devel :: Cover (per vedere quali parti del tuo codice sono coperti dai tuoi test e quali no).

+0

Sto testando il mio codice quando possibile. Non avevo pensato che potesse migliorare le mie capacità di codifica. Guarderò la famiglia di moduli Test :: in una luce diversa ora. – harleypig

+0

Direi che se è mai impossibile testare il tuo codice (il che è sottinteso dal tuo test quando possibile), allora dovresti riscriverlo * make * it possible! Mi rendo conto che questo non è sempre pratico - ad esempio se stai parlando con alcuni servizi esterni - ma è qualcosa che dovresti sempre cercare di fare. Se si ha a che fare con un'interfaccia esterna non testabile, quindi considerare di separare il codice per discuterne dal resto dell'applicazione, in modo da poter prendere in giro quell'interfaccia e almeno testarla il più possibile. E davvero dovresti guardare Devel :: Cover. Ha salvato il mio lavoro in passato. – DrHyde

Problemi correlati