【发布时间】:2017-01-11 04:41:25
【问题描述】:
我想通过 UART 串口为 Arduino 实现一个交互式 shell,使用纯 C++ OOP 风格的代码。但是我觉得如果代码中判断用户输入命令的时候if-else判断太多的话,会有点难看,
所以我想问一下,有什么方法可以避免使用 if-else 语句?例如,
之前:
while(Serial.available())
{
serialReceive = Serial.readString();// read the incoming data as string
Serial.println(serialReceive);
}
if(serialReceive.equals("factory-reset"))
{
MyService::ResetSettings();
}
else if(serialReceive.equals("get-freeheap"))
{
MyService::PrintFreeHeap();
}
else if(serialReceive.equals("get-version"))
{
MyService::PrintVersion();
}
之后:
while(Serial.available())
{
serialReceive = Serial.readString();// read the incoming data as string
Serial.println(serialReceive);
}
MagicClass::AssignCommand("factory-reset", MyService::ResetSettings);
MagicClass::AssignCommand("get-freeheap", MyService::PrintFreeHeap);
MagicClass::AssignCommand("get-version", MyService::PrintVersion);
【问题讨论】:
-
如果你还有兴趣,我写了一个关于代码审查的相关问题:codereview.stackexchange.com/questions/260122/…
标签: c++ arduino esp8266 arduino-esp8266 platformio