Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Não poderíamos ter utilizado direto o método sacar? Caso retornar True, eu Deposito e OK


    public bool Transferir(double valor, ContaCorrente contaDestino)
    {
        if (this.Sacar(valor))
        {
            contaDestino.Depositar(valor);
            return true;
        }
        return false;
    }
3 respostas

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:

  • Classes: Operacoes, Logs

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.

solução!

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.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software