|Think about Loose Coupling|
Very well said, ChOas.
I saw such node yesterday, and I realized what was happening. You quoted the code that was given in the request, just fixing the most obvious thing but retaining the design faults, for which you got the blame.
I fully understand your feelings.
I always have the same doubts when answering questions. Either I point out the flaw, without code (missing this, double that, etc) or I recode using my style. At least, if I get the blame, I am blamed for something I have done.
Sometimes, though, the code given is just too much and I can't recode everything. In these cases, I list my assumptions ("provided that you are reading from STDIN and using strict and your data is not bigger than ...") and provide an "untested" snippet.
As for taking over the script, as you ask, I try not to do it, unless the problem is very clearly defined and no side effects are in sight. Modifying other people scripts can lead to cargo cult problems1. If the user misunderstands what you've done, he/she will get into trouble and then once again you will be blamed.
If I can't give a clear solution, because the original code has more problems than the author is asking me to fix, then my usual choice is to provide a sample script. Something that works, that runs smoothly, gives results and addresses the main problem only. Therefore, you can't cut-and-paste into your script if you don't undestand it. In this context I am free of using my code style, giving some explanations when I feel that something could be difficult to get.
My purpose in writing an answer to a SOPW request is to give something useful, avoiding to get the user in more trouble than she/he was in before asking.
Thanks for this interesting insight!
1See also voodoo programming
_ _ _ _ (_|| | |(_|>< _|