These XY answers should contain a mention of Y, if relevant, skip the scolding, and answer the question.
These XY answers should contain a mention of Y, if relevant, skip the scolding, and answer the question.
If you have the answer but would rather the person not do it, just put a disclaimer on top of your answer.
If the question/answer combo is way too specific that there's no chance someone is going to to benefit from it the future, maybe it should die, like other posters said.
A common one I come across is people trying to track who's online/offline with window.onbeforeunload.
The answer is always "that's not reliable, you can't really use it for this".
A good answer mentions the alternatives - storing the user's last activity and considering them logged out after X minutes, using websockets for a presence channel, etc.
I see no reason to avoid the "you can accomplish your underlying goal in a better way" answers.
Only if the question is "Is window.onbeforeunload reliable to track online/offline users?"
In every other case, that should be a disclaimer on top of an answer to the actual question.
Maybe future users don't need 100% reliability for some reason. Maybe they're just trying to find out if something like onbeforeunload even exists.
Sure, showing better ways is fine. As long as there is an actual answer somewhere (preferably with the disclaimer), instead of cute but condescending non-answers like [1].
We're gonna have to disagree on this.
That's like me asking "how do I get to this restaurant", and you give me directions to the place that burned down a year ago without mentioning that. Useless, and infuriating when I drive a half hour to discover it.
Consider that the asker might just using the restaurant as a reference to some other place. Or someone "hearing" the answer in the future wanted to know the address to visit the ruins. The information might still be useful. Consider that you might not always know better.
If this were a chatroom or forum, fine, answer informally. But we're talking in the context of a Q&A webiste.
Like it or not, regexes are able to parse a limited subset of HTML.
By explaining why they only can parse this small subset is a great teaching opportunity on Chomsky Hierarchies. And the people searching for it might learn that XML parsers exist.
By actually giving an answer to the question (after saying the above of course) you might be helping thousands of people parse very simple HTML when they're in a hurry.
By saying [1] you're just adding low-effort content on the internet that doesn't teach anyone anything, but make you look cool to your peers.
By explaining to them Chomsky Hierarchies they can understand limitations of regexes and learn about parsers and.
By showing them the regex able to parse a limited HTML subset they might be able to try it out and see such limitations by themselves on their own screen. Additionally they might be able to learn some new regex tricks.
Maybe you learned things in a different way, but lots of people enjoy learning stuff by doing and by seeing demonstrations.
Besides, I concede that "helping thousands of people parse very simple HTML when they're in a hurry" has its merit, but IMHO that's also how you end up debugging a production bug at 3am while losing faith in your fellow developers and humanity, so I'm not sure if it's a net plus. YMMV.
And yet it is not only wrong, but the answers below do a much better job at explaining Chomsky Hierarchies and other things correctly.
Why is it wrong? "Have you tried using an XML parser instead?" is wrong because HTML is not necessarily XML/XHTML. The first working draft of HTML5 was published a year before that answer, and non-XML websites existed since the 90s, so there's no excuses.
-
> but IMHO that's also how you end up debugging a production bug at 3am while losing faith in your fellow developers and humanity, so I'm not sure if it's a net plus
And that's why you treat people like adults: you tell them the limitations of each method, instead of making a meme.
And btw, you can get bugs at 3am with a XML (or HTML) parser too.