Oggetto nullo ed eccezioni

-1

I modelli di progettazione Case o Null speciali forniscono ancora valore quando il comportamento dell'applicazione, e non solo il comportamento dell'oggetto deve cambiare?

Mi è stato assegnato il compito di rivedere una vecchia applicazione e refactoring del suo codice per registrare meglio / gestire gli errori.

Questa applicazione è un'API MVC .NET scritta in C # che gestisce i dati in sola lettura. Dal momento che è di sola lettura, inizialmente pensavo che fosse un buon candidato per l'utilizzo di Oggetti Null o Special Case, quando restituivo i dati dal livello di servizio. Il problema si presenta quando si verifica un errore durante la creazione di questi comportamenti speciali. È un'API dovrebbe restituire i codici HttpStatus pertinenti. Ciò significa che il comportamento deve cambiare non solo all'origine dell'eccezione, ma anche durante la presentazione della risposta.

Ho visto codice che utilizza il controllo di tipo esplicito o esegue il controllo dell'oggetto per determinare se il comportamento dell'applicazione dovrebbe cambiare. Fare in modo che il controllo dei tipi di pratica regolare sembri particolarmente negativo in C #. Sono anche riluttante a usare gli oggetti di dominio per determinare lo stato in cui sembra che le responsabilità si offuschino, anche se sono casi particolari.

Credo che avrò una soluzione diversa, probabilmente una risposta generica che avvolge il reale carico utile dei dati. Tuttavia, mi chiedo se ci siano casi validi in cui chiunque possa pensare a dove si vorrebbe ancora utilizzare un oggetto caso nullo o speciale per gestire le eccezioni, quando le eccezioni richiedono un cambiamento nel comportamento dell'applicazione passato dove si è verificata l'eccezione.

Dopo aver esplorato la possibilità di utilizzare Oggetti Null o Special Case, sembra che i suoi usi siano limitati a quando il comportamento dell'applicazione è completamente indipendente dalla risposta che si potrebbe ottenere da una chiamata di servizio / metodo. Se è necessario agire diversamente, non riesco a vedermi utilizzando Null o Special Case Object. Se qualcuno ha avuto esperienze diverse per favore fammelo sapere, perché sembra che questo sia un modello comune e potrei mancare / fraintendere qualcosa.

    
posta PieMaker 08.11.2017 - 20:59
fonte

1 risposta

1

Se utilizzi un approccio RESTful, la tua messaggistica dovrebbe essere conforme a Interfaccia uniforme .

Ciò significa che se un client tenta di OTTENERE una risorsa che non è presente, la risposta corretta sarebbe HTTP 404 NOT FOUND.

Se un client fa una richiesta che fa cadere il server, la risposta corretta sarebbe probabilmente HTTP Server Internal Error.

Se un cliente fa una richiesta che non è autorizzata, alcuni aspetti di 403.x potrebbero essere appropriati.

Gli oggetti nulli e gli oggetti caso speciali hanno maggiori probabilità di essere utili nelle API interne, ad es. semplici chiamate di metodo a oggetti PoC o chiamate che non attraversano i confini del sottosistema. Restituire un oggetto nullo soprattutto su un servizio per me sembrerebbe un design molto scarso.

    
risposta data 09.11.2017 - 01:48
fonte

Leggi altre domande sui tag