Méthode la plus efficace pour effectuer && ?
-
13-12-2019 - |
Question
J'ai une situation courante où vous avez deux variables (xSpeed et ySpeed) que je souhaite définir indépendamment sur zéro lorsqu'elles tombent en dessous de minSpeed, et quitter lorsqu'elles sont toutes les deux nulles.
Quelle serait la méthode la plus efficace ?Actuellement, j'ai deux méthodes (la méthode 2 étant plus propre), mais je me demandais si vous connaissiez une meilleure façon....
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;
La solution
Tu peux faire
if(-minSpread < xSpeed && xSpeed < minSpeed) {
xSpeed = 0;
if(-minSpread < ySpeed && ySpeed < minSpeed) {
ySpeed = 0;
return -1;
}
} else if(-minSpread < ySpeed && ySpeed < minSpeed) {
ySpeed = 0;
}
Autres conseils
Je préfère votre deuxième exemple car c'est le plus lisible.Préférez la lisibilité à l’efficacité, sauf si vous pouvez prouver que vous devez optimiser.
Créez peut-être une méthode booléenne élégante pour voir si l'objet bouge/s'arrête :
boolean isStopped() {
if(Math.abs(xSpeed)< minSpeed) xSpeed = 0;
if(Math.abs(ySpeed)< minSpeed) ySpeed = 0;
return (ySpeed==0 && xSpeed==0);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow