La convalida dell'input è necessaria?

1

Questa è una domanda molto ingenua sulla convalida dell'input in generale.

Sono un utente di MATLAB (1,5 anni) e ho appreso le tecniche di convalida dell'input come "parse" e "validatestring". In effetti, le funzioni integrate di MATLAB sono piene di quelle convalide e parser. Quindi, ho pensato che questo fosse il modo professionale di sviluppo del codice. Con queste tecniche, puoi essere sicuro del formato dei dati delle variabili di input. Altrimenti i tuoi codici respingeranno gli input e restituiranno un errore.

Tuttavia, alcune persone sostengono che se c'è un problema nella variabile di input, i codici causano errori e si fermano. Noterai comunque il problema, e allora qual è il punto di quelle complicate convalide?

Dato che i codici per la validazione stessa richiedono un po 'di sforzi e tempo, spesso con controlli del flusso abbastanza complicati, ho dovuto ammettere che questa opinione ha avuto un punto. Con massicce convalide di input, la leggibilità dei codici potrebbe essere compromessa.

    
posta John Smith 24.01.2014 - 06:41
fonte

2 risposte

3

Il problema di base è quanto è facile capire e correggere l'errore di input.

Se hai una sequenza breve e semplice di "input x" ... "numero errore troppo grande, arresto anomalo", la convalida dell'input non è molto importante. Ma quando l'utente spende più di qualche secondo per inserire le informazioni, o le conservi in modo che possano riprendere da dove erano state interrotte, si arrabbieranno. Allo stesso modo, se realizzano che un valore precedente era sbagliato, vogliono tornare indietro e modificarlo. Conservare l'input e saltarci dentro significa che ora devi verificare i valori salvati (l'utente ha modificato il file dei valori salvati?).

Oppure salti il ciclo di prompt e tipo e vai direttamente a un file. A Matlab piacciono grandi file di numeri di input. Ma molto rapidamente ti ritrovi con un grosso file "di input" che deve essere verificato. Avendo messaggi di errore che dicono "on line 8637 il 18esimo valore è un float dove dovrebbe essere un numero intero compreso tra 0 e 400" è molto utile. Anche se non dovresti avere 18 valori su una riga se puoi evitarlo. Sono fastidiosi da generare, ma per l'utente "il tuo file di 30.000 righe ha un errore, vedi se riesci a trovarlo" è assolutamente inutile.

Una volta ho passato un mese a scrivere un "generatore di file di input" da utilizzare per uno scienziato. Stava alimentando i file in una grande applicazione Fortran che girava su un supercomputer, ed era molto incline al tipo o al messaggio di cui sopra. Funzionerebbe per un'ora o due, quindi dirà "profilo non valido". Nemmeno "il profilo numero 37 non è valido", solo "è successo qualcosa di brutto". Così ho scritto un'applicazione GUI che caricava il file, lo analizzava e lo visualizzava in modo modificabile, quindi lo salvavo come file di input valido per la grande macchina. Brutto come niente, un sacco di controlli di pagina nidificati e griglie grandi, ma utilizzabile. Era più economico pagarmi per farlo che continuare a pagare per il tempo del supercomputer che portava a stupidi messaggi di errore. E ha drasticamente accelerato il loro lavoro - invece di iniziare con un file che sapevano funzionasse e modificarlo un passo alla volta, alimentando ognuno nel proprio computer lento locale e vedendo se si sarebbe verificato un errore durante la notte, potevano fare un mucchio di modifiche nel mio programma quindi verificarlo localmente con la certezza che funzionerebbe.

    
risposta data 24.01.2014 - 07:09
fonte
4

if there is a problem in input variable, codes will cause errors and stop.

Un problema in input o codice causerà errori e fermerà solo se sei fortunato . Se sei sfortunato, un problema in una variabile di input causerà un non corretto, ma risultato plausibile .

Risultati errati ma plausibili sono cattivi, perché pensi hai la risposta corretta, e pensi il problema è risolto, quindi vai al prossimo passo di qualunque cosa tu stia facendo, usando un valore errato. E le conseguenze dell'uso di un valore errato che ritieni sia corretto possono essere enormi - vedi ha fatto un errore di codifica di Excel distruggere le economie del mondo occidentale? .

    
risposta data 24.01.2014 - 10:00
fonte

Leggi altre domande sui tag