Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Desafio: conversor de moedas

No desenvolvimento backend, a criação de funções (ou métodos) é o primeiro passo para um design modular de código. Ao extrair o cálculo de conversão cambial para uma função específica, estamos aplicando diretamente o Princípio da Responsabilidade Única (SRP), um dos pilares do SOLID.

Em um ecossistema Java (Spring Boot) ou em uma arquitetura serverless (como funções AWS Lambda), esse bloco de código atuaria como um serviço de domínio isolado. A maior vantagem dessa arquitetura é a testabilidade: ao isolar a função, podemos criar testes unitários automatizados, passando diferentes valores e taxas simuladas para garantir que o cálculo matematicamente não falhe, sem precisar rodar ou depender do restante do sistema.

Algoritmo em Linguagem Natural

1. Definição da Função (A Regra de Negócio Isolada)

    Nome da Função: Converter_Para_Dolar

    Parâmetros de Entrada (Payload): Variável [Valor_Reais] e Variável [Taxa_Cambio].

    Processamento: Criar a variável [Valor_Convertido] e atribuir a ela o resultado da divisão de [Valor_Reais] por [Taxa_Cambio].

    Retorno: Devolver o [Valor_Convertido] para o sistema que fez a chamada.

2. Fluxo Principal do Programa (A Interface com o Usuário)

INÍCIO

    Solicitar ao usuário o montante em reais e armazenar na variável [Entrada_Reais].

    Obter a cotação do dólar (inserida pelo usuário ou via integração com uma API de câmbio) e armazenar em [Entrada_Taxa].

    Chamada da Função: Executar a função Converter_Para_Dolar passando as variáveis [Entrada_Reais] e [Entrada_Taxa] como argumentos.

    Armazenar o retorno dessa função na variável [Resultado_Final].

    Exibir a mensagem: "Conversão concluída. Com a taxa atual, o montante em dólares é: US$ [Resultado_Final]".
FIM

Trabalhar com funções garante baixo acoplamento. Se amanhã a regra de conversão mudar (por exemplo, exigindo a cobrança de IOF em cada transação), basta alterar o código internamente na função Converter_Para_Dolar, e o fluxo principal do programa continuará funcionando intacto.

1 resposta
solução!

Oi!

Weriton, é fascinante ver como você conecta conceitos fundamentais de lógica com arquiteturas modernas como Serverless e princípios SOLID.

Sua abordagem demonstra uma visão clara de como a modularização facilita a vida de quem desenvolve e mantém software a longo prazo.

Destaques da sua Estrutura

  • Testabilidade: Esse é um ponto de ouro que você mencionou. Quando isolamos a lógica em uma função pura (aquela que, para as mesmas entradas, sempre gera a mesma saída), os testes unitários se tornam simples e extremamente confiáveis.
  • Baixo acoplamento: Sua percepção sobre a mudança na regra de negócio (como a inclusão do IOF) sem impactar a interface do usuário é a definição prática de um código bem estruturado. O "mundo exterior" não precisa saber como o cálculo é feito, apenas que ele funciona.
  • Encapsulamento: Ao definir a função Converter_Para_Dolar com parâmetros claros, você cria um contrato. Quem chama a função só precisa saber o que enviar e o que esperar de volta.

Uma perspectiva para refinar

Pensando na escalabilidade que você citou: em sistemas reais de backend, muitas vezes lidamos com o problema da precisão decimal (especialmente em moedas). Ao implementar esse algoritmo em linguagens como Java ou JavaScript, um próximo passo de estudo interessante seria pesquisar por que não usamos tipos como float ou double para dinheiro, preferindo classes como BigDecimal ou tratando tudo em centavos (inteiros).

Isso evitaria aqueles erros de arredondamento bizarros que podem surgir em divisões cambiais.

Sua documentação está impecável e o uso de termos técnicos foi aplicado com muita precisão. Parabéns por mais esse projeto!

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