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

[Sugestão] Exemplo de KISS ineficiente

O modo simplificado apresenta funcionalidades diferentes para o complicado.

O complicado consegue verificar o mês, dando uma idade mais correta do que o simplificado.

Como tem essa diferença, não faz muito sentido aplicar o conceito de KISS e ter uma perda de uma funcionalidade importante para o contexto.

1 resposta
solução!

Olá, Levi! Como vai?

O princípio KISS (Keep It Simple, Stupid) sugere que devemos manter as coisas simples e diretas. No entanto, como você observou, a simplicidade não deve comprometer a funcionalidade necessária de um programa.

No exemplo dado na aula, a versão "simplificada" de calcularIdadeSimples() é mais simples porque apenas subtrai o ano atual do ano de nascimento. No entanto, você está correto ao dizer que essa versão simplificada não leva em conta o mês de nascimento, o que pode resultar em uma idade imprecisa.

Aqui está um exemplo de como você poderia manter a simplicidade do código, mas ainda assim considerar o mês de nascimento:

function calcularIdade(dataNascimento: Date): number {
  const agora = new Date();
  let idade = agora.getFullYear() - dataNascimento.getFullYear();
  const m = agora.getMonth() - dataNascimento.getMonth();
  if (m < 0 || (m === 0 && agora.getDate() < dataNascimento.getDate())) {
    idade--;
  }
  return idade;
}

Neste exemplo, ainda mantemos o código bastante simples, mas adicionamos uma verificação para o mês (e dia) de nascimento. Portanto, a simplicidade do código é mantida sem perder a precisão necessária para calcular a idade corretamente.

Lembre-se, o princípio KISS é uma diretriz, não uma regra rígida. Às vezes, é necessário adicionar um pouco de complexidade para atender aos requisitos do programa. O importante é evitar a complexidade desnecessária e manter o código o mais simples possível, sem sacrificar a funcionalidade necessária.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.