Sobes.tech
Middle+

Tarea: se le pidió que realizara una revisión de código de una nueva función, cuya esencia es la capacidad de reservar un tour (que consiste en un boleto de avión y un hotel). Las funciones para reservar por separado el boleto de avión y el tour ya existen, se espera que esta tarea tenga un método unificado que reserve todo el tour o ninguna de sus partes.

sobes.tech AI

Respuesta de la IA

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

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

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

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

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

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