Se il campo è richiesto quando si inseriscono i dati, dovrei controllare se null durante il recupero?

0

Se alcuni campi sono obbligatori quando si inseriscono dati, dovrei controllare se null quando li recupero (supponiamo di dover fare qualcosa con questi campi che possono generare un'eccezione se null ), o non dovrei farlo a meno che non cambi il mio sistema e ha iniziato ad accettare null per questi campi?

    
posta Dabbas 30.08.2016 - 21:06
fonte

3 risposte

1

La tua domanda può essere compresa in due modi:

  1. Devo fidarmi del database se impone la restrizione non nulla?
  2. Dovrei fidarmi che l'altro codice convalidato non inserisca un valore nullo (nessuna app di database o il database accetta null ma in qualche modo vogliamo applicarlo da soli)

Nel caso 1.

Fidati del database. Sia per la restrizione nulla che per l'integrità referenziale. Se si intende verificare null quando il database è progettato per non accettare null in quella colonna, si potrebbe anche concludere la convalida dell'integrità referenziale prima di inserire una riga. Lascia che il database funzioni per te.

Nel caso 2.

Se consentire il null in quella parte di dati è assolutamente fuori questione, lasciare che il programma fallisca durante i test. Questo ti dirà la parte del programma che inserisce la riga deve essere riparata. Se alcuni altri fattori fuori dal tuo controllo, come la latenza della rete che causa fallimenti nelle chiamate API esterne, potrebbero far sì che il valore recuperato sia nullo, quindi passare al controllo Null.

Dopotutto " un programmatore è qualcuno che guarda in entrambe le direzioni prima di attraversare una strada a senso unico " ... così dicono.

    
risposta data 31.08.2016 - 01:58
fonte
2

Non dovresti dipendere dai dati precedentemente convalidati. Anche se proviene da un database che sapete non consente il null in quella colonna, è comunque ipotizzabile che ci possa essere qualche bug nel codice intermedio che finisce per farvi passare un null. Detto questo, c'è un motivo per controllarlo invece di gestire l'eccezione?

Puoi fare qualcosa al riguardo se non lanciare un'eccezione? C'è un vantaggio nel generare un'eccezione ora invece che quando il programma tenta di utilizzare il valore null? Il valore null può essere utilizzato in qualche modo per danneggiare i dati o l'applicazione?

Se il controllo non crea in qualche modo un risultato migliore rispetto a non verificare nel caso di un valore nullo, non c'è motivo di verificarlo.

    
risposta data 30.08.2016 - 21:18
fonte
0

Se chiedi se dovresti controllare, dovresti prima capire cosa farai quando qualcosa non va e i controlli falliscono.

"Lanciare un'eccezione" non è la risposta: basta passare il tempo. A un certo punto devi decidere cosa fare. E quello che fai deve essere meglio di "spero che non accada e pregare che il risultato non sia poi così male se dovesse accadere", perché è quello che ottieni gratis senza controllo.

Quindi, a meno che e fino a quando non trovi la risposta a cosa farai se il controllo fallisce, il controllo è assolutamente inutile.

    
risposta data 31.08.2016 - 03:01
fonte

Leggi altre domande sui tag