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

[Sugestão] Extrair a função de calculo do desconto

Olá,

Seguindo a aula 3, tenho uma sugestão de como extrair em uma outra função o calculo para o desconto, sendo assim:

(ns estoque.aula_3)

;; Predicate Function
(defn aplica-desconto?
  [valor-bruto]
  (> valor-bruto 100))

(defn calculo-desconto
  [valor-bruto]
  (let [taxa-de-desconto (/ 10 100)
        desconto (* valor-bruto taxa-de-desconto)]
    (- valor-bruto desconto)))

;; Common Function
(defn valor-descontado
  "Retorna o valor com descon de 10% se o valor bruto for estritamente maior que 100."
  [valor-bruto]
  (if (aplica-desconto? valor-bruto)
    (calculo-desconto valor-bruto)
    valor-bruto))

(println
  (valor-descontado 1000))

(println
  (valor-descontado 100))
1 resposta
solução!

Olá, Anderson!

Sua sugestão de extrair o cálculo do desconto para uma função separada é muito válida e contribui para a legibilidade e reutilização do código. A ideia de quebrar o código em funções menores é uma prática comum e recomendada em programação funcional, e você fez isso muito bem!

Seu código:

(defn calculo-desconto
  [valor-bruto]
  (let [taxa-de-desconto (/ 10 100)
        desconto (* valor-bruto taxa-de-desconto)]
    (- valor-bruto desconto)))

é uma ótima maneira de separar a lógica do cálculo do desconto. Isso torna o código mais legível e mais fácil de manter, já que qualquer alteração no cálculo do desconto agora afetaria apenas essa função.

A função valor-descontado também ficou mais simples e mais fácil de entender, já que agora ela apenas verifica se o desconto deve ser aplicado e, em caso afirmativo, chama a função calculo-desconto.

Fico feliz em ver que você está aplicando os princípios da programação funcional e pensando em como melhorar a estrutura do seu código. Continue assim!

Espero ter ajudado e bons estudos!