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

Dica de refatoração deste código?

Olá! Gostaria de uma sugestão de refatoração desse código, onde não precise repetir a mesma frase no print, mas que tenha a diferença entre "não está" e "está" madura:

void main() {
  String nome = "Laranja";
  double peso = 102.3;
  int diasDesdeColheita = 29;
  int diasFicarMadura = 30;
  bool isMadura = diasDesdeColheita >= diasFicarMadura;
  funcFruta(
      nomeFruta: nome,
      pesoFruta: peso,
      diasDesdeColheitaFruta: diasDesdeColheita,
      diasFicarMaduraFruta: diasFicarMadura,
      isMaduraFruta: isMadura);
}

funcFruta(
    {required String nomeFruta,
    required double pesoFruta,
    required int diasDesdeColheitaFruta,
    required int diasFicarMaduraFruta,
    required bool isMaduraFruta}) {
  if (isMaduraFruta) {
    print(
        "A $nomeFruta pesa $pesoFruta gramas! Ela foi colhida há $diasDesdeColheitaFruta dias e precisa de $diasFicarMaduraFruta para amadurecer. Logo, a $nomeFruta está madura!");
  } else {
    print(
        "A $nomeFruta pesa $pesoFruta gramas! Ela foi colhida há $diasDesdeColheitaFruta dias e precisa de $diasFicarMaduraFruta para amadurecer. Logo, a $nomeFruta não está madura!");
  }
}

alguma dica? obg!!

2 respostas
solução!

Bom dia Stèphanie!

Então, existem 1001 formas de fazer o que você deseja, tudo depende da lógica que você prefere, ou da lógica que mais encaixa no seu projeto. No caso vou te mostrar uma das formas pra resolver que é considerada uma boa prática: Vamos fazer uma função separada que pega o valor de madura e retorna uma String!

void main() {
  String nome = "Laranja";
  double peso = 102.3;
  int diasDesdeColheita = 29;
  int diasFicarMadura = 30;
  bool isMadura = diasDesdeColheita >= diasFicarMadura;
  funcFruta(
      nomeFruta: nome,
      pesoFruta: peso,
      diasDesdeColheitaFruta: diasDesdeColheita,
      diasFicarMaduraFruta: diasFicarMadura,
      isMaduraFruta: isMadura);
}
String funcIsMaduraString(bool isMadura){
  if(isMadura){
    return '';
  }else{
    return 'não';
  }
}

funcFruta(
    {required String nomeFruta,
    required double pesoFruta,
    required int diasDesdeColheitaFruta,
    required int diasFicarMaduraFruta,
    required bool isMaduraFruta}) {

        print("A $nomeFruta pesa $pesoFruta gramas! Ela foi colhida há $diasDesdeColheitaFruta dias e precisa de $diasFicarMaduraFruta para amadurecer. Logo, a $nomeFruta $funcIsMaduraString está madura!");
}

Agora uma pergunta, você consegue me dizer porque que é melhor usar uma função separada do que repetir a frase várias vezes?

Oii Kako, bom dia!!

Eu estava tentando fazer uma condicional mas sem estar dentro da função, e da forma que você sugeriu era a que estava tentando desenvolver por aqui, e estava fazendo de forma errada hahahahah no return tava trocando o valor bool por string, para substituir o "true or false" do isMadura (olha eu entregando uma prática errada)... São inúmeras as formas mesmo, e a criação da função faz total sentido para evitar escrita redundante de código e manutenção posterior.