## Условие
- Провести ревью кода;
- Рассказать какие проблемы имеются в данном коде;
- Внести правки по каждой из найденных проблем.
type Account struct{UserId int64Balance float64}
type Transaction struct{From int64To int64Amount float64}
type AccountRepository struct{// Здесь набор методов для работы с аккаунтом пользователя}
type MessageBroker struct{// Здесь набор методов для работы с брокером сообщений}
type TranscationService struct{accountRepository AccountRepositorymessageBroker MessageBroker}
func(t*TranscationService) MakeTransaction(fromUser, toUser int64, amount float64) error{sourceAccount:=t.accountRepository.Get("SELECT * FROM account WHERE id = "+strconv.Itoa(fromUser))destinationAccount:=t.accountRepository.Get("SELECT * FROM account WHERE id = "strconv.Itoa(toUser))
if sourceAccount.Balance>=amount{t.accountRepository.saveAccount(Account{UserId: fromUser,Balance: sourceAccount.Balance-amount})
t.accountRepository.saveAccount(Account{UserId: toUser,Balance: destinationAccount.Balance-amount})
t.messageBroker.Send(Transaction{From: fromUser,To: toUser,Amount: amount})
return nil} else{return errors.New("some error ")}}Решение
Заголовок раздела «Решение»Источник: Magnit / Магнит - 2 (E-com) · 1 кв 2025
← Что выведет этот код? · Все задачи · Go · Какое поведение у кода ниже? →