ฉันมีรหัสต่อไปนี้:
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()
ครั้งเดียวก่อนที่จะเรียงซ้อนกันทั้งหมด