Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public bool Transfer(Account from, Account to, double amount)
- {
- from.Balance = from.Balance - amount;
- to.Balance = from.Balance + amount;
- return true;
- }
- // 1. Нет смысла что-то возвращать из этого метода.
- // 2. Надо проверить на null ссылки
- // 3. Надо проверить amount на положительность. Это моё предположение насчёт бизнес правил здесь.
- Так же, для этого можно заморочиться и завести класс AmountToTransfer и в него запихнуть эту проверку, но не факт, что этим стоит увлекаться здесь.
- // 4. Я не уверен, что в бизнесе всё так просто, что списание и пополнение, это просто изменение баланса. Тут плохая инкапсуляция. Лучше методы сделать для такого. После этого проверку amount на положительность можно убрать из этого метода.
- // 5. Списание и пополнение нужно делать в рамках одной транзакции. Это, может быть, и неявно тут уже есть, но можно и явно попробовать. Напишу псевдокод здесь.
- public void Transfer(Account from, Account to, double amount)
- {
- if(from == null)
- {
- throw new AccountIsNotProvidedException("from");
- }
- if(to == null)
- {
- throw new AccountIsNotProvidedException("to");
- }
- if(amount <= 0)
- {
- throw new CanNotTransferNegativeAmountException(amount);
- }
- using(var transaction = TransactionManager.StartTransaction())
- {
- from.WriteOfFor(to, amount);
- to.TopUp(from, amount);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement