我有下面的代码,看起来不太好。我可以用什么方法使它看起来更好呢?想象一下有很多IF ELSE语句。作为一个例子,我想区分左边比右边小还是大。并且增加了更多的距离。(这是关于一个机器人,它应该能探测到它前面的障碍物。)
distance1 = left_LOX.distance();
distance2 = middle_LOX.distance();
distance3 = right_LOX.distance();
if (distance1 < 100 || distance2 < 100 || distance3 < 100)
distance_case = 1;
else if (distance1 < 300 || distance2 < 300 || distance3 < 300)
distance_case = 2;
else
distance_case = 3;
// Abfragen für die Automatik
switch (distance_case)
{
case 1:
target = 0;
robot.Stop();
delay(2000);
break;
case 2:
target = 4000;
robot.Forward();
break;
case 3:
target = 6000;
robot.Forward();
break;
}
如果能有个办法让它变得更好就好了。
4条答案
按热度按时间d7v8vwbk1#
如果
distance_case
没有长期使用,您可以直接使用if ... else if ... else
块。它不必要地引入了没有用途的新变量。或者定义一个enum
,如果您看到,长期来看,会有很多这样的情况。Reader也可以快速地理解这些值。uz75evzq2#
nvbavucw3#
如果你有很多距离(几百,几千),那么首先把所有的距离分组到一个容器中,比如vector,然后使用标准算法,就比较容易了。这是假设您在使用的esp 32平台/编译器上有可用的C++ std库-它应该至少可以达到C++11 -参见例如https://medium.com/geekculture/modern-c-with-esp32-dcd3918dd978。
一旦你有了最小距离,你就可以运行各种情况来处理。这是基于你只对最短距离感兴趣的假设来选择你的机器人的动作。如果你有更复杂的逻辑,代码也会变得更复杂。
ilmyapht4#
如果你觉得更合适的话你可以加进去。