Performables are stateful, but immutable
Instances of Performable classes are not intended to be reused. A single class may have many instances created, but each instance should be used only once. This is because the 'parameter values' for each performable are provided into that performable object instance.
Parameters should ideally be provided into the performable class' public constructor.
Another viable technique could be init
-only property setters.
Once these values are set, they should be readonly
so that they may not be changed.
Performable classes should also avoid the use of mutable class-level data such as fields or properties.
Any temporary state should be scoped only to the relevant PerformAsAsync
method.