Questa domanda è una versione più chiara di una domanda Ho pubblicato su SO.
Ho un oggettoPlanner
C ++% con un metodo che calcola un Route
da un punto iniziale a un punto di destinazione. Planner
è il proprietario del puntatore Route
calcolato.
Ora, ho un secondo metodo (chiamalo TestRoute
), che prende l'oggetto del percorso e indica se la destinazione è raggiungibile dal punto di partenza, e in caso contrario cerca di trovare un percorso che passa attraverso le stazioni di rifornimento.
L'implementazione originale di TestRoute
era di restituire un puntatore Route
quando il viaggio è fattibile (con o senza rifornimento) e NULL in caso di errore:
- se è necessario un rifornimento di carburante,
TestRoute
restituisce un puntatore alla nuova rotta; - se non è necessario il rifornimento, restituisce un puntatore a una copia della rotta originale, poiché il suo proprietario è
Planner
.
In entrambi i casi, è compito del chiamante di TestRoute
distruggere l'oggetto Route
restituito.
Bene, ora un mio collega vuole che il metodo restituisca NULL
quando la rotta è fattibile senza fare rifornimento, per evitare inutili copia e distruzione.
Quindi il metodo restituirebbe:
- NULL in caso di errore
- un puntatore a
Route
in caso di successo quando viene calcolato un nuovoRoute
- NULL in caso di successo (!!) quando non è necessario il rifornimento.
Mi sembra un disegno terribile. Posso avere qualche opinione?