다음 코드가 있습니다.
if (this->_car.getAbsoluteAngle() <= 30 || this->_car.getAbsoluteAngle() >= 330)
this->_car.edir = Car::EDirection::RIGHT;
else if (this->_car.getAbsoluteAngle() > 30 && this->_car.getAbsoluteAngle() <= 60)
this->_car.edir = Car::EDirection::UP_RIGHT;
else if (this->_car.getAbsoluteAngle() > 60 && this->_car.getAbsoluteAngle() <= 120)
this->_car.edir = Car::EDirection::UP;
else if (this->_car.getAbsoluteAngle() > 120 && this->_car.getAbsoluteAngle() <= 150)
this->_car.edir = Car::EDirection::UP_LEFT;
else if (this->_car.getAbsoluteAngle() > 150 && this->_car.getAbsoluteAngle() <= 210)
this->_car.edir = Car::EDirection::LEFT;
else if (this->_car.getAbsoluteAngle() > 210 && this->_car.getAbsoluteAngle() <= 240)
this->_car.edir = Car::EDirection::DOWN_LEFT;
else if (this->_car.getAbsoluteAngle() > 240 && this->_car.getAbsoluteAngle() <= 300)
this->_car.edir = Car::EDirection::DOWN;
else if (this->_car.getAbsoluteAngle() > 300 && this->_car.getAbsoluteAngle() <= 330)
this->_car.edir = Car::EDirection::DOWN_RIGHT;
나는 if
s 사슬 을 피하고 싶다 . 정말 못 생겼어요. 이것을 작성하는 또 다른, 아마도 더 깨끗한 방법이 있습니까?
this
( this->
) 필요하지 않습니다 정말 가독성 .. 아무것도 좋은하지 않습니다
>
테스트 없이는 코드가 훨씬 덜 추악 할 것입니다 . 그것들 각각은 이전 if
문장 에서 이미 (반대 방향으로) 테스트 되었기 때문에 필요하지 않습니다 .
else if
.
this->_car.getAbsoluteAngle()
전체 캐스케이드 전에 한 번 fectch하면 훨씬 덜 추하고 입력 하기가 적고 읽기가 더 좋아 보일 것입니다.