Domanda

Ho una situazione comune in cui hai due variabili (Xspeed e Yspeed) che voglio impostare in modo indipendente a zero quando cadono sotto la minusspeed e uscire quando sono entrambi zero.

Quale sarebbe il metodo più efficiente?Attualmente ho due metodi (metodo 2 essendo più pulito), ma mi stavo chiedendo se voi ragazzi sapessi un modo migliore ....

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;
.

È stato utile?

Soluzione

Puoi fare

if(-minSpread < xSpeed && xSpeed < minSpeed) {
    xSpeed = 0;
    if(-minSpread < ySpeed && ySpeed < minSpeed) {
        ySpeed = 0;
        return -1;
    }
} else if(-minSpread < ySpeed && ySpeed < minSpeed) {
    ySpeed = 0;
}
.

Altri suggerimenti

Preferisco il tuo secondo esempio perché è il più leggibile.Preferisci la leggibilità sull'efficienza a meno che non si possa dimostrare che dovresti ottimizzare.

Forse fare un elegante metodo booleano per vedere se l'oggetto è in movimento / fermato:

boolean isStopped() {
    if(Math.abs(xSpeed)< minSpeed) xSpeed = 0;
    if(Math.abs(ySpeed)< minSpeed) ySpeed = 0;

    return (ySpeed==0 && xSpeed==0);
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top