jasoncoon / esp8266-fastled-webserver

GNU General Public License v3.0
712 stars 360 forks source link

Fields: Have each type independently serialize #219

Open henrygab opened 2 years ago

henrygab commented 2 years ago

_Originally posted by @tobi01001 in https://github.com/jasoncoon/esp8266-fastled-webserver/pull/216#discussion_r757550079_

In convertToJson(), the request is to have each unique Field_t serialization handled in the switch statement directly, rather than code multiple if statements that each run code that is common to a random subset of the types.

This will help make the code easier to understand, which reduces bugs.

On platforms that use F-Strings (ESP8266, AVR), there will be a small cost that cannot be optimized, due to the optimizer's inability to consolidate F-strings. On platforms with flat memory model (ESP32, most ARM based mcu), it is expected that the compiler will consolidate common code paths more efficiently than human hand optimization.