What's wrong with output parameters?

Posted by Chris McCall on Stack Overflow See other posts from Stack Overflow or by Chris McCall
Published on 2009-09-16T17:31:13Z Indexed on 2010/03/12 19:37 UTC
Read the original article Hit count: 163

Filed under:
|
|
|
|

Both in SQL and C#, I've never really liked output parameters. I never passed parameters ByRef in VB6, either. Something about counting on side effects to get something done just bothers me.

I know they're a way around not being able to return multiple results from a function, but a rowset in SQL or a complex datatype in C# and VB work just as well, and seem more self-documenting to me.

Is there something wrong with my thinking, or are there resources from authoritative sources that back me up? What's your personal take on this and why? What can I say to colleagues that want to design with output parameters that might convince them to use different structures?

EDIT: interesting turn- the output parameter I was asking this question about was used in place of a return value. When the return value is "ERROR", the caller is supposed to handle it as an exception. I was doing that but not pleased with the idea. A coworker wasn't informed of the need to handle this condition and as a result, a great deal of money was lost as the procedure failed silently!

© Stack Overflow or respective owner

Related posts about c#

Related posts about output-parameters