But they only seem to work if the interface doesn't change. From the example you gave:
function reticulateSplines(){
if( featureIsEnabled("use-new-SR-algorithm") ){
return enhancedSplineReticulation();
}else{
return oldFashionedSplineReticulation();
}
}
All well and good as long as the enhancedSplineReticulation returns the exact same structure that the old one did. If it doesn't, then a bunch of code that handles the new reticulated splines also needs to be behind a flag (because the structure changed). And that could mean a chunk of UI needs to be duplicated behind a flag because it changed, and so on.How do you use feature flags when the features aren't just trivial changes to methodology, but affect multiple parts of the system?