Sto scrivendo un'applicazione abbastanza semplice che si occupa della prenotazione delle camere d'albergo. Ho un problema in una fase.
Sto elaborando una coda di ordini. Per ogni ordine uno dei receptionist dovrebbe scegliere una stanza (una o nessuna) per il cliente secondo la sua strategia. Ecco perché ho deciso di andare con Java Optional
. Il problema è che se non ci sono semplicemente stanze libere alla data desiderata l'ordine dovrebbe essere cancellato, ma se ci sono alcune camere disponibili e nessuna di queste è adatta alla strategia del receptionist, l'ordine dovrebbe essere rimesso in coda.
Scegliere le stanze sicuramente dovrebbe essere il dovere del receptionist. Quale pensi che sia il modo migliore per affrontare quel problema in modo pulito? Devo lanciare un'eccezione invece di restituire Optional
vuota quando non ci sono date alla data? Sfortunatamente, le eccezioni di solito non sono una buona soluzione per controllare il flusso del codice.
Frammento di codice:
Optional<Room> selectedRoom = receptionist.chooseRoom(rooms,
order.getQuestionnaire());
boolean decision = selectedRoom
.map(room -> receptionist.askClient(order.getClient(),
room,
order.getQuestionnaire()))
.orElse(false);
if (shouldProcessAgain(order, selectedRoom.isPresent(), decision)) {
orders.add(order);
}