1
resposta

Pré-processamento de dados que não são utilizados 100% dos casos

Gostaria de pontuar uma "boa prática" que foi ensinada nessa aula, o professor escreveu o seguinte trecho de código:

// pré processando condicionais
bool acertou = chute == numero_secreto;
bool maior = chute > numero_secreto;

if(acertou)
{
    // do stuff
} else if(maior)
{
    // do stuff
} else
{
    // do stuff
}

Porém esse código sempre processa a variável "maior", mesmo quando a variável "acertou" já foi computada como verdadeira. Oque é uma má prática considerando que um dos objetivos do "else if" é evitar a execução de condicionais desnecessárias, fora o fato de que você carrega esse valor em memória até o final da execução do escopo. Minha sugestão é que fossem utilizadas funções caso as condicionais se tornassem complexas o suficiente para atrapalhar a legibilidade do código.


if(acertou(chute, numero_secreto))
{
    // do stuff
} else if (chutou_maior(chute, numero_secreto))
{
    // do stuff
} else {
    // do stuff
}

Ou até mesmo mover toda a complexidade para apenas uma função que abstraia a implementação da tratativa de acertos ou erros


string relacao = compara(chute, numero_secreto);
cout << "Sua tentativa é " << relacao << " numero secreto!" << endl;
1 resposta

Olá, Diogo! Tudo bem?

A sua sugestão também é válida.

O curso procurou mostrar a forma mais comum de encontrar esse tipo de solução.

Além disso, no caso do nosso jogo, a probabilidade da pessoa acertar de primeira é muito pequena, caindo sempre em outras condições. Portanto, poderia não ser tão vantajoso trabalhar com as funções.

Obrigada por compartilhar com a gente novas visões sobre como solucionar o problema. Com certeza irá ajudar outros alunos!

Bons estudos e abraços :)