12062 shaares
306 private links
306 private links
temporary flags are rarely temporary. Once a flag exists, it starts attracting dependencies.
Documentation has to mention it. Support has to ask whether it is enabled. Bug reports have to include it. Tests need to cover both states.
A flag is a boolean and the boolean in the interface usually means a branching factor in maintenance.
The solution:
Every new flag should come with an expiration story.
Why does it exist? Who needs it? What breaks if it goes away? When will that be acceptable? If nobody can answer these questions, the flag is probably not a feature.