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.