Tôi đang viết một ứng dụng khá đơn giản liên quan đến đặt phòng khách sạn. Tôi đã có một vấn đề ở một giai đoạn.
Tôi đang xử lý một hàng các đơn đặt hàng. Đối với mỗi đơn hàng, một trong những nhân viên tiếp tân nên chọn một phòng (một hoặc không có gì) cho khách hàng theo chiến lược của mình. Đó là lý do tại sao tôi quyết định đi với Java Optional
. Vấn đề là nếu đơn giản là không có phòng miễn phí vào ngày mong muốn thì đơn hàng sẽ bị hủy, nhưng nếu có một số phòng có sẵn và không có phòng nào phù hợp với chiến lược của nhân viên tiếp tân thì nên đặt hàng trở lại hàng đợi.
Chọn phòng chắc chắn phải là nhiệm vụ của lễ tân. Bạn nghĩ gì là cách tốt nhất để giải quyết vấn đề đó một cách sạch sẽ? Tôi có nên ném một ngoại lệ thay vì trở về trống Optional
khi không có phòng vào ngày? Thật không may, các trường hợp ngoại lệ thường không phải là một giải pháp tốt để kiểm soát dòng mã.
Đoạn mã:
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);
}