Recentemente ho ricevuto un feedback da un collega sul mio codice sorgente di un sito web. Dice che è una cattiva pratica non gestire con garbo ciò che l'interfaccia visiva non consente di fare.Fa schifo per non fornire errori aggraziati a un utente che non utilizza correttamente il sito web?
Dato che non è molto chiaro, ecco un esempio.
Diciamo che un visitatore può commentare qualcosa.
- Un commento viene salvato in un database, in una colonna
nvarchar(500)
. - La lunghezza
<input />
campo è limitato a 500.
Ma, naturalmente, nulla vieta ad un utente più avanzato per disabilitare il limite di lunghezza e digitare 501 caratteri.
(Altri esempi:. Presentando un'opzione che non esiste anche in una <select />
Ma c'è è un errore di grazia quando l'utente viene chiesto di inserire un numero, e lei entra in un non numero invece, dal momento che gli eventi keypress sono controllati tramite JavaScript e JavaScript può essere disabilitato)
Se il visitatore lo fa, ci sarebbe un errore a livello di contratti di codice. La richiesta AJAX fallirebbe con un errore imprevisto (o, a pagina inoltrata, ci sarà un errore imprevisto). In tutti i casi, il visitatore vedrà che è successo qualcosa di sbagliato, ma non avrà alcun messaggio aggraziato che indica che la lunghezza del commento inviato è troppo lunga.
Perché è una cattiva pratica? Perché dovrei preoccuparmi di progettare messaggi di errore chiari ed espliciti per i casi in cui il visitatore che utilizza correttamente il sito Web non avrà mai?
Nota: capisco che fa schifo per visualizzare un errore dettagliato .NET Framework e una traccia dello stack quando qualcosa del genere accade. Se lo faccio, si tratta di un serio problema di sicurezza. Ma nel mio caso, c'è solo una risposta AJAX con qualcosa di molto generico o un reindirizzamento a una pagina generica con le scuse su un errore.
Stai scherzando vero? Sembra che tu non voglia fare il lavoro. Un utente non dovrebbe vedere un sacco di errori di codice. Dovresti avere un corretto controllo degli errori che non dovrebbe consentire agli utenti di fare cose che chiaramente non dovrebbero. Dovresti controllarlo sul frontend (JavaScript) e sul backend. Se un utente ignora in qualche modo i controlli javascript, il sistema dovrebbe intercettarlo prima di tentare di inviarlo al DB. – xil3
@ xil3 - Hai letto la domanda? Dichiara di essere protetto su FrontEnd usando maxlength e sul backend usando contratti di codice. Chiede se deve visualizzare un messaggio di errore formattato (e potenzialmente tradotto) per uno scenario che potrebbe essere causato solo da un utente malintenzionato. –
@MainMa - Penso che sia necessario riformulare la domanda, poiché ogni risposta qui ha mancato il punto. –