Método mais eficiente de realizar &&?
-
13-12-2019 - |
Pergunta
Eu tenho uma situação comum onde você tem duas variáveis (xSpeed e ySpeed) o que eu quero, de forma independente definido para zero quando caem abaixo de minSpeed, e sair quando ambos estão a zero.
Qual seria o método mais eficiente?Atualmente tenho dois métodos (Método 2 limpo), mas eu queria saber se vcs sabiam que o melhor caminho....
Method1:
bool isZeroX = Math.abs(xSpeed)< minSpeed;
bool isZeroY = Math.abs(ySpeed)< minSpeed;
if(isZeroX && isZeroY) return -1;
else if(isZeroX) xSpeed = 0;
else if(isZeroY) ySpeed = 0;
Method2:
if(Math.abs(xSpeed)< minSpeed) xSpeed = 0;
if(Math.abs(ySpeed)< minSpeed) ySpeed = 0;
if(ySpeed==0 && xSpeed==0) return -1;
Solução
Você pode fazer
if(-minSpread < xSpeed && xSpeed < minSpeed) {
xSpeed = 0;
if(-minSpread < ySpeed && ySpeed < minSpeed) {
ySpeed = 0;
return -1;
}
} else if(-minSpread < ySpeed && ySpeed < minSpeed) {
ySpeed = 0;
}
Outras dicas
Eu prefiro o segundo exemplo porque é o mais legível.Preferem a legibilidade sobre a eficiência, a menos que você possa provar que você deve ser optimização.
Talvez faça um elegante método booleano para ver se o objeto está em movimento ou parado:
boolean isStopped() {
if(Math.abs(xSpeed)< minSpeed) xSpeed = 0;
if(Math.abs(ySpeed)< minSpeed) ySpeed = 0;
return (ySpeed==0 && xSpeed==0);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow