public bool Transferir(double valor, ContaCorrente contaDestino)
{
if (this.Sacar(valor))
{
contaDestino.Depositar(valor);
return true;
}
return false;
}
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.