È buona pratica implementare una gestione delle eccezioni inutile, nel caso in cui un'altra parte del codice non sia codificata correttamente?
Esempio di base
Semplice, quindi non perdo tutti:).
Diciamo che sto scrivendo un'app che mostrerà le informazioni di una persona (nome, indirizzo, ecc.), i dati che vengono estratti da un database. Diciamo che sono io a codificare la parte dell'interfaccia utente e qualcun altro sta scrivendo il codice di interrogazione del database.
Ora immagina che le specifiche della tua app dicono che se le informazioni della persona sono incomplete (diciamo che il nome manca nel database), la persona che codifica la query dovrebbe gestirlo restituendo "NA" per il campo mancante.
Che cosa succede se la query è mal codificata e non gestisce questo caso? Cosa succede se il tizio che ha scritto la query ti gestisce un risultato incompleto e quando provi a visualizzare le informazioni, tutto si blocca, perché il tuo codice non è pronto a mostrare cose vuote?
Questo esempio è molto semplice. Credo che molti di voi diranno "non è un tuo problema, non sei responsabile di questo incidente". Ma è ancora la parte del codice che si sta bloccando.
Un altro esempio
Diciamo che sono io a scrivere la query. Le specifiche non dicono lo stesso di sopra, ma che il ragazzo che scrive la query "Inserisci" dovrebbe assicurarsi che tutti i campi siano completi quando si aggiunge una persona al database per evitare di inserire informazioni incomplete. Devo proteggere la mia query "select" per assicurarmi di fornire informazioni complete sull'interfaccia utente?
Le domande
Che cosa succede se le specifiche non dicono esplicitamente "questo ragazzo è il responsabile della gestione di questa situazione"? Cosa succede se una terza persona implementa un'altra query (simile alla prima, ma su un altro DB) e usa il codice dell'interfaccia utente per visualizzarla, ma non gestisce questo caso nel suo codice?
Devo fare ciò che è necessario per prevenire un possibile crash, anche se non sono io quello che dovrebbe gestire il caso negativo?
Non cerco una risposta del tipo "(s) lui è il responsabile dello schianto", poiché non sto risolvendo un conflitto qui, mi piacerebbe sapere, dovrei proteggere il mio codice dalle situazioni è non è mia responsabilità gestire? Qui, un semplice "se vuoto fai qualcosa" sarebbe sufficiente.
In generale, questa domanda affronta la gestione delle eccezioni ridondanti. Lo sto chiedendo perché quando lavoro da solo su un progetto, posso codificare 2-3 volte un'analoga gestione delle eccezioni nelle funzioni successive, "nel caso in cui" ho fatto qualcosa di sbagliato e ho fatto passare un caso negativo.