Самый эффективный метод выполнения &&?
У меня есть общая ситуация, когда у вас есть две переменные (xSpeed и ySpeed), которые я хочу независимо установить на ноль, когда они падают ниже minSpeed, и выйти, когда они обе равны нулю.
Какой будет самый эффективный метод? В настоящее время у меня есть два метода (метод 2 более чистый), но мне было интересно, если бы вы, ребята, знали лучше...
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;
3 ответа
Решение
Ты можешь сделать
if(-minSpread < xSpeed && xSpeed < minSpeed) {
xSpeed = 0;
if(-minSpread < ySpeed && ySpeed < minSpeed) {
ySpeed = 0;
return -1;
}
} else if(-minSpread < ySpeed && ySpeed < minSpeed) {
ySpeed = 0;
}
Я предпочитаю ваш второй пример, потому что он наиболее читабелен. Предпочитайте удобочитаемость, а не эффективность, если вы не докажете, что должны оптимизировать.
Возможно, создайте элегантный логический метод, чтобы увидеть, движется ли объект / остановлен:
boolean isStopped() {
if(Math.abs(xSpeed)< minSpeed) xSpeed = 0;
if(Math.abs(ySpeed)< minSpeed) ySpeed = 0;
return (ySpeed==0 && xSpeed==0);
}