Método más eficiente de realizar &&?
-
13-12-2019 - |
Pregunta
Tengo una situación común en la que tiene dos variables (xspeed y yspeed) que quiero configurar de forma independiente a cero cuando caen por debajo de la velocidad en Mix. y salen cuando ambos son cero.
¿Cuál sería el método más eficiente?Actualmente tengo dos métodos (Método 2 que es más limpio), pero me preguntaba si ustedes sabían una mejor manera ...
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;
Solución
puedes hacer
if(-minSpread < xSpeed && xSpeed < minSpeed) {
xSpeed = 0;
if(-minSpread < ySpeed && ySpeed < minSpeed) {
ySpeed = 0;
return -1;
}
} else if(-minSpread < ySpeed && ySpeed < minSpeed) {
ySpeed = 0;
}
Otros consejos
Prefiero su segundo ejemplo porque es el más legible.Prefiere la legibilidad sobre la eficiencia a menos que pueda probar que debe optimizarse.
Tal vez haga un método booleano elegante para ver si el objeto se está moviendo / se detiene:
boolean isStopped() {
if(Math.abs(xSpeed)< minSpeed) xSpeed = 0;
if(Math.abs(ySpeed)< minSpeed) ySpeed = 0;
return (ySpeed==0 && xSpeed==0);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow