Say I have a system that I want to enable or disable, what do you think is best: to write two separate functions EnableSystem() and DisableSystem() OR have a singular function with the parameter to indicate the desired state, SystemState(bool state)?
I was wondering if there is a standard for this or a preference?
I would argue that having two separate functions is better since different things might happen under those functions but what if it is the situation where it really is just as simple as a 1 or a 0. Example if we have an LED we want to turn on an off it would just be passing the value of the parameter state.
Situation one:
void LEDEnable() {
GPIOPinSet(LED_PIN, true);
}
void LEDDisable() {
GPIOPinSet(LED_PIN, false);
}
Situation two:
void LEDState(bool state) {
GPIOPinSet(LED_PIN, state);
}


Correct answer - depends.
Option 1 if enabling led is action itself, not side effect. This would justify having enable/disable specific side effects in those functions. This is unlikely for given example. Enabling/disabling led likely side effect itself. You don’t want to put side effects into side effects.
Option 2 if it’s a side effect of bigger process. Option 2 makes harder to add side effects which will drive (but not guarantee) better separation of concerns.
Though, I’d go with option 1 anyway since I trust my self to not nest side effects even when code doesn’t hint me