Come dovrei gestire i messaggi di errore in una libreria, per un'applicazione di sola visualizzazione

1

Ho una libreria con diversi livelli. La libreria è un'API hardware e ha diversi thread. L'applicazione che lo sta utilizzando non ha un'interazione diretta dell'utente, l'interfaccia utente è solo per la visualizzazione. Avevo bisogno di un modo per dire all'utente se c'era un errore e di cosa si trattava. Così ho creato un evento di errore che passa un messaggio sui livelli.

Questa non sembra una diretta violazione della separazione delle preoccupazioni, anche se forse un'area grigia.

La libreria dovrebbe recuperare dalla maggior parte degli errori da sola. Ad esempio: se perde la connessione all'hardware continua a provare a riconnettersi, quando lo fa può continuare.

Avevo bisogno di un modo per cancellare il messaggio di errore dallo schermo una volta eliminato l'errore, quindi ho creato un evento ClearErrorMessage che viene generato una volta che la libreria continua. Questo dice all'interfaccia utente di cancellare il messaggio di errore dallo schermo.

Il mio evento ClearErrorMessage sembra essere una chiara violazione della separazione delle preoccupazioni dal momento che la biblioteca non dovrebbe preoccuparsi di cosa c'è sopra.

Esiste un modo migliore per gestire ciò che è più modulare in natura?

    
posta TheColonel26 17.04.2018 - 20:26
fonte

2 risposte

3

Non vedo un problema di "separazione dei dubbi" se la tua lib crea un evento onHardwareStatusChanged(String currentStatusMessage) in cui è possibile registrare l'applicazione per la sola visualizzazione.

l'applicazione di visualizzazione potrebbe visualizzare "connessione all'host http: ... perso" e pochi minuti dopo "tutto è ok".

    
risposta data 18.04.2018 - 15:03
fonte
2

I needed a way to clear the error message off the screen

Ecco le tue preoccupazioni. L'applicazione ha bisogno di un modo per cancellare i messaggi di errore, non la tua libreria. La tua biblioteca dovrebbe comunicare sullo stato, l'applicazione dovrebbe decidere cosa fare con esso.

Mi piace farlo registrando un evento, ma puoi anche consentire all'applicazione di eseguire il polling dell'API per lo stato corrente.

    
risposta data 18.04.2018 - 16:18
fonte

Leggi altre domande sui tag