I have a problem with classifying/naming class that I've written. Initially, it was supposed to be a base class for visual effects, so VisualEffect seems obvious, but not entirely.
This class is so abstract that it can be used for many other things. The closest fit seems to be either process or task.
State:
Limiter - determines the object's duration, can be a counter, timer, or signal.
Update - method of performing updates (in steps with time intervals, via signal, or reading from the given update function, which will return whether a modifier should be applied),
Union/Variant:
signal we wait for to update (we'll receive a modifier in the signal),
pointer to a function from which we'll know when the next update will take place and what modifier to apply now,
predefined constant steps (number of steps and time interval between each of them) for using modifiers defined by default,
predefined time intervals with modifiers for each of them.
Pause - whether the object is temporarily paused or not,
Activity - whether the object has started or is already in the process of stopping,
Keep alive - whether, after the limiter signals that the duration has ended, we leave the object alive or delete it,
Validity - whether the object was correctly created (may change during execution if, for example, the method that updated the object suddenly returns incorrect modifiers),
Initialization method callable - it is called at startup, should restore the object to the expected state, an important element in repetitions.
Functionalities:
Start,
Update,
Pause,
Resume,
Restart,
Stop,
Finish,
Additionally:
Die,
Finish repetitions,
Set a new limit,
Change the method of updating/initialization.
ChatGPT suggested the name Task or Process. I also add Base, Framework, Controller, Executor, Handler, and other nonsense. Does Task fit here? How would you name such a base class?