This kind of question is especially common in "best practices" topics. A common experience in programming is choosing one of two apparently trivially different alternatives that "seems right" and then realizing later that the chosen option causes unforeseen issues with anything from compatibility to maintainability.
Consider the heuristic for determining the quality of a question by the quality of the answers it might receive. If the question solicits opinions, all of which are equally valid ("no wrong answer" / "no right answer"), then it shouldn't be asked. However, it is not always possible for the asker to apply this heuristic because the asker doesn't know if the question even has a right answer.
Hypothetical example:
Should I use
for(i=0;i<10;i++) {code}
ori=0; while(i<10) {code; i++}?
Assume this is in a language where they are semantically equivalent and have no side effects. Anyone who attempts to give something other than a non-answer (e.g. "it doesn't matter; do whichever is more readable") would have nothing to contribute other than "I prefer x." Based on the above heuristic, this question shouldn't be asked. But someone unfamiliar with the language doesn't know that. What if a for loop is 10 times faster than a while loop, but the counter is inaccessible to the code in a for loop?
Are people that strict about determining if a question is "constructive"? Is there a universally "right" way to turn it into a constructive question, e.g. prefacing it by asking "Are these equivalent or is one superior to the other? In which cases would it be superior?" How should one avoid falling into the "Stack Overflow is not a recommendation engine" trap if one doesn't doesn't know that the question solicits recommendations based on preferences instead of a commonly established best practice or an alternative that is clearly superior to another?