1
resposta

[Dúvida Redundância de código

Para evitar redundância de código, fiz a implementação um pouco diferente, subscrevi apenas o valor a considerar de saldo e criei o método privado com a lógica. Ficou bom?

**class Conta...**
  void enviar(double saque) {
    _finalizarEnvio(_saldo, saque);
  }

  void _finalizarEnvio(double saldo, double saque) {
    if (saldo < saque) {
      stdout.write("Saldo insuficiente para enviar R\$${saque.toStringAsFixed(2)}. ");
    } else {
      _saldo -= saque;
      stdout.write("Enviado R\$${saque.toStringAsFixed(2)} por $titular. ");
    }
    imprimeSaldo();
  }

**class ContaCorrente...**
  @override
  void enviar(double saque) {
    _finalizarEnvio(_saldo + emprestimo, saque);
  }
1 resposta

Oii, Eduardo. Tudo bem?

Sua preocupação em evitar a repetição de lógica é um excelente sinal de que você está desenvolvendo um olhar apurado para a qualidade do código.

A ideia de centralizar a lógica de validação e subtração do saldo em um método auxiliar como o _finalizarEnvio é interessante, pois você isola a regra de negócio em um único ponto. Isso facilita caso precise alterar a mensagem de saída ou a forma como o débito é feito no futuro.

Sua abordagem trouxe alguns benefícios claros:

  • Manutenibilidade: Se a regra de como um envio é finalizado mudar, você altera apenas o _finalizarEnvio.
  • Clareza na intenção: O método enviar da ContaCorrente deixa explícito que, para aquela classe, o "saldo disponível" é a soma do saldo real com o empréstimo.

O código ficou limpo e resolve o problema de não repetir o if e as mensagens de stdout em todas as classes. Você aplicou bem o conceito de reutilização.

Para continuar explorando esses conceitos, você pode consultar a documentação oficial do Dart sobre Extending a class.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!