Continuo a stupirmi che, in questo giorno ed età, i prodotti che hanno anni di utilizzo sotto la cintura, costruiti da team di professionisti, ancora fino ad oggi - non riescono a fornire utili messaggi di errore per l'utente. In alcuni casi, l'aggiunta di una piccola parte di informazioni aggiuntive potrebbe far risparmiare ore di problemi all'utente.
Un programma che genera un errore, generato per un motivo. Ha tutto a sua disposizione per informare l'utente il più possibile, perché qualcosa è fallito. Eppure sembra che fornire informazioni per aiutare l'utente sia una priorità bassa. Penso che questo sia un enorme fallimento.
Un esempio è di SQL Server. Quando provi a ripristinare un database che è in uso, giustamente non te lo consente. SQL Server conosce quali processi e applicazioni vi stanno accedendo. Perché non può includere informazioni sui processi che stanno utilizzando il database? So che non tutti passano un attributo Applicatio_Name
sulla loro stringa di connessione, ma anche un suggerimento sulla macchina in questione potrebbe essere utile.
Un altro candidato, anche SQL Server (e mySQL) è il delizioso messaggio di errore string or binary data would be truncated
e gli equivalenti. Un sacco di tempo, una semplice lettura dell'istruzione SQL che è stata generata e la tabella mostra quale colonna è il colpevole. Questo non è sempre il caso, e se il motore del database ha rilevato l'errore, perché non può salvarci quella volta e ci dice semplicemente quale dannata colonna era? In questo esempio, si potrebbe sostenere che potrebbe esserci un problema di prestazioni nel controllarlo e che ciò impedirebbe lo scrittore. Bene, comprerò quello. Che ne dite, una volta che il motore di database sa che c'è un errore, fa un rapido confronto dopo-fatto, tra i valori che sarebbero stati immagazzinati, rispetto alle lunghezze delle colonne. Quindi visualizzalo all'utente.
Anche gli horrid Table Adapters di ASP.NET sono colpevoli. Le query possono essere eseguite e si può dare un messaggio di errore che dice che un vincolo da qualche parte viene violato. Grazie per quello. È tempo di confrontare il mio modello di dati con il database, perché gli sviluppatori sono troppo pigri per fornire anche un numero di riga o dati di esempio. (Per la cronaca, non userei mai questo metodo di accesso ai dati per scelta , è solo un progetto che ho ereditato!).
Ogni volta che lancio un'eccezione dal mio codice C # o C ++, fornisco tutto ciò che ho a portata di mano all'utente. La decisione è stata presa per lanciarlo, quindi più informazioni posso fornire, meglio è. Perché la mia funzione ha generato un'eccezione? Cosa è stato trasmesso e cosa era previsto? Mi ci vuole un po 'di più per mettere qualcosa di significativo nel corpo di un messaggio di eccezione. Diavolo, non fa altro che aiutarmi me mentre io sviluppo, perché so che il mio codice lancia cose che sono significative.
Si potrebbe sostenere che i messaggi di eccezione complicati non dovrebbero essere visualizzati all'utente. Anche se non sono d'accordo, è un argomento che può facilmente essere placato avendo un diverso livello di verbosità a seconda della build. Anche in questo caso, gli utenti di ASP.NET e SQL Server non sono i tuoi utenti tipici e preferirebbero qualcosa di pieno di verbosità e informazioni gustose perché possono rintracciare i loro problemi più velocemente.
Perché gli sviluppatori pensano che sia giusto, in questo giorno ed età, fornire la minima quantità di informazioni quando si verifica un errore?
Sono 2011 ragazzi, vieni su .