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,
TestRouterestituisce 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
Routein 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?