Qual è la migliore pratica per la convalida dei parametri del metodo in una libreria? [chiuso]

3

Sviluppo una libreria di giochi in javascript, contenente molte classi. Esito dal comportamento che dovrei seguire riguardo alla convalida dei parametri del metodo:

Devo controllare la validità dei parametri passati a ciascun metodo?

Per esempio, quando un metodo prende solo un numero compreso tra 0 e 100 nel parametro, dovrei controllare che il valore sia corretto?

Ho dozzine di classi, ognuna con dozzine di metodi. Per un semplice getter, posso avere più della metà delle righe del codice utilizzato solo per il controllo dei parametri. Aggiungere controlli rende il mio codice meno gestibile, più pesante.

Visto che si tratta di una libreria, destinata a essere utilizzata da molti altri programmatori, il controllo dei parametri può evitare molti errori e bug e sarebbe apprezzato.

Quindi, come gestiscono altre librerie javascript e qual è la soluzione migliore?

    
posta BAK 10.03.2013 - 11:20
fonte

2 risposte

3

Convalida tutto ciò che potresti considerare "sospetto", cioè qualsiasi cosa provenga da al di fuori della tua stessa classe. Parametri ai metodi pubblici? Vengono da "Outside" quindi li convalidano. Parametri ai metodi privati? Tecnicamente questi sono già "Dentro" quindi c'è meno motivo per farlo di nuovo di nuovo . (Naturalmente, potresti verificare diversi criteri a questo livello, quindi potresti avere ancora un buon motivo per farlo).

E avere un mezzo coerente per gestire i "problemi" dei parametri. Ad alcune persone piace lanciare le eccezioni, altre restituiscono valori nulli dai loro metodi. YMMV. Scegli quello che funziona per te e seguilo.

    
risposta data 28.02.2014 - 13:46
fonte
1

Sì, dovresti sempre convalidare i tuoi input. La mancata convalida è una delle principali fonti di comportamento imprevisto.

Senza conoscere la struttura del tuo codice, se disponi di una serie di metodi semplici e un metodo principale, puoi inserire il codice di convalida nel metodo principale anziché in tutti i singoli.

Come dici tu è una libreria, gli sviluppatori faranno la loro validazione in base alla loro logica di business. La loro logica di business potrebbe essere diversa dalla tua.

Un rapido sfogliamento attraverso la sorgente jQuery li vede convalidare i parametri di input.

    
risposta data 10.03.2013 - 15:47
fonte

Leggi altre domande sui tag