public bool Transferir(double valor, ContaCorrente contaDestino)
{
if (this.Sacar(valor))
{
contaDestino.Depositar(valor);
return true;
}
return false;
}
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
public bool Transferir(double valor, ContaCorrente contaDestino)
{
if (this.Sacar(valor))
{
contaDestino.Depositar(valor);
return true;
}
return false;
}
Olá Daniel, tudo bom?
Veja bem, seguindo os princípio da responsabilidade única, e outras boas práticas de codificação. Temos o seguinte contexto:
O método Sacar, subtrai um valor da conta, caracterizando-o como uma Retirada ou Movimentação de Saída.
A Transferência, por outro lado, subtrai o valor de uma conta Movimentando-a para outra. Ou seja, uma operação que gera um Crédito a mais que o saque.
Pensando em um caso de uso:
Você precisa criar um Log de Transferências e outro de Saques. Como desacoplaria os objetos e métodos para que registrassem sua funcionalidade?
Você poderia ter o seguinte cenário, por exemplo:
Operações: Sacar(), Tranferir().
Logs: RegistrarLog().
public class Operacoes()
{
public void Sacar()
{
try
{
//Lógica do saque
Log.Registrar(dadosSaque);
}
catch(Exception ex)
{
//Utilizando reflection para capturar os dados do saque.
Log.Registrar(dadosSaque);
//Chamada para o método de gravação.
}
}
public void Transferir()
{
try
{
//Lógica da transferência
Log.Registrar(dadosTransferencia);
}
catch(Exception ex)
{
//Utilizando reflection para capturar os dados da transferência.
Log.Registrar(dadosTransferência);
//Chamada para o método de gravação.
}
}
}Espero ter te ajudado.
Até mais.
Boa tarde, tudo ok Mateus.
Pensando no crescimento do sistema e implementação de Logs, realmente faz sentido.
Obrigado pelo retorno.
Imagina.
Não esqueça de marcar a resposta como solucionada, caso tenha sido solucionado. Afinal, outras pessoas podem estar procurando pela mesma resposta.
Até mais.