A volte è necessario scrivere un costruttore che può fallire. Ad esempio, supponiamo di voler creare un'istanza di un oggetto con un percorso file, qualcosa del genere
obj = new Object("/home/user/foo_file")
Finché il percorso punta a un file appropriato, tutto va bene. Ma se la stringa non è un percorso valido, le cose dovrebbero rompersi. Ma come?
Potresti:
- generare un'eccezione
- return null object (se il tuo linguaggio di programmazione consente ai costruttori di restituire valori)
- restituisce un oggetto valido ma con una bandiera che indica che il suo percorso non è stato impostato correttamente (ugh)
- altri?
Presumo che le "migliori pratiche" di vari linguaggi di programmazione lo implementerebbero diversamente. Ad esempio, penso che ObjC preferisca (2). Ma (2) sarebbe impossibile da implementare in C ++ dove i costruttori devono avere il vuoto come tipo di ritorno. In quel caso, ritengo che sia usato (1).
Nel tuo linguaggio di programmazione preferito puoi mostrare come gestiresti questo problema e spiegare perché?
void
: restituiscono un oggetto.
new
chiama operator new
per allocare la memoria, quindi il costruttore per riempirla. Il costruttore non restituisce nulla e new
restituisce il puntatore da cui proviene operator new
. void
Tuttavia, se "non restituisce nulla" implica "ritorni " è in palio.