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;
Était-ce utile?

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
scroll top