Attribuzione: è nata da una relativa domanda P.SE
Il mio background è in C / C ++, ma ho lavorato molto in Java e sto attualmente codificando C #. A causa del mio background in C, controllare i puntatori passati e restituiti è di seconda mano, ma riconosco che distorce il mio punto di vista.
Recentemente ho visto la menzione del Pattern di oggetto Null in cui l'idea è che un oggetto sia sempre restituito. Il caso normale restituisce l'oggetto popolato previsto e il caso di errore restituisce un oggetto vuoto invece di un puntatore nullo. La premessa è che la funzione chiamante avrà sempre una sorta di oggetto per accedere e quindi evitare violazioni della memoria ad accesso nullo.
- Quindi quali sono i pro / contro di un controllo nullo rispetto all'utilizzo del modello di oggetto nullo?
Riesco a vedere codice chiamante più pulito con il NOP, ma posso anche vedere dove creerebbe errori nascosti che altrimenti non vengono sollevati. Preferirei che la mia applicazione venisse a mancare (anche se è un'eccezione) durante lo sviluppo piuttosto che far scappare l'errore in silenzio.
- Non è possibile che il modello oggetto nullo abbia problemi simili in quanto non esegue un controllo Null?
Molti degli oggetti con cui ho lavorato contengono oggetti o contenitori propri. Sembra che dovrei avere un caso speciale per garantire che tutti i contenitori dell'oggetto principale avessero oggetti vuoti. Sembra che questo potrebbe diventare brutto con più livelli di nidificazione.