Sobes.tech
Middle+

Εργασία: Σας ζητήθηκε να κάνετε μια ανασκόπηση κώδικα μιας νέας λειτουργίας, της ουσίας της οποίας είναι η δυνατότητα κράτησης ενός τουρ (που αποτελείται από ένα εισιτήριο αεροπορικού και ένα ξενοδοχείο). Οι λειτουργίες για ξεχωριστή κράτηση του εισιτηρίου και του τουρ ήδη υπάρχουν, αναμένεται ότι αυτή η εργασία θα παρέχει μια ενιαία μέθοδο που θα κρατήσει ολόκληρο το τουρ ή κανένα από τα συστατικά του.

sobes.tech AI

Απάντηση από AI

В такой задаче важно обеспечить атомарность операции бронирования тура, чтобы либо оба компонента (авиабилет и отель) были забронированы, либо ни один — иначе возможна рассинхронизация данных.

Основные моменты для ревью:

  • Использовать транзакцию, которая охватывает оба бронирования.
  • Обработать возможные ошибки каждого шага, чтобы при неудаче откатить изменения.
  • Проверить, что вызовы к существующим методам бронирования авиабилета и отеля поддерживают откат или отмену.
  • Логировать процесс для отладки и аудита.

Пример на C# с использованием транзакции (псевдокод):

using(var transaction = dbContext.Database.BeginTransaction())
{
    try
    {
        BookFlight(flightDetails);
        BookHotel(hotelDetails);
        transaction.Commit();
    }
    catch(Exception)
    {
        transaction.Rollback();
        throw;
    }
}

Если методы бронирования не поддерживают транзакции, нужно реализовать компенсационные действия (отмена бронирования), чтобы при ошибке откатить уже сделанные брони.