Ho una domanda che non so come generalizzare e fare correttamente, quindi proverò con un esempio.
Supponiamo che io progetta un sistema di gestione dei parcheggi. Nel mio sistema, ho gli oggetti Car
e ParkingLot
, dove ParkingLot
contiene una mappa dal numero di targa dell'automobile a Car
oggetti. Uno dei metodi di ParkingLot
è getCar(n)
, che può fallire se n
non è un numero di registrazione valido, o se un'automobile con tale numero di registrazione non esiste nel parcheggio.
Ho due opzioni:
-
ha
getCar
convalida il numero di registrazione. Può quindi restituire un errorenot_valid
se il numero non è valido. Lo svantaggio, a mio avviso, è che l'oggettoParkingLot
esegue la convalida dei parametri che appartengono logicamente aCar
. -
Hai
getCar
controlla solo se il numero di registrazione è sulla mappa. Lo svantaggio è che l'unico errore possibile sarebbenot_found
, quindi il chiamante non sarebbe in grado di sapere se la funzione non è riuscita perché il numero di registrazione non è valido, o l'auto non è lì.
C'è un modo migliore per andare con questo? Forse c'è una soluzione superiore che consentirà di salvare la validazione extra, che aumenta l'accoppiamento e fornisce comunque informazioni complete per il chiamante?