Я хотел бы реализовать интерактивную оболочку через последовательный порт UART для Arduino с чистым кодом в стиле 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);