While going through some public API's (for instance android.view.View.getLocationOnScreen), I noticed that it's quite common to use an approach of void
function with out
parameters rather then simply returning a value.
I see the benefits of this approach when there are multiple return values, and it doesn't make sense to create a dedicated complex type to hold them. It is also useful in OOP when a function returns some interface and the user is allowed to choose the implementation most suitable for his case.
In many of the examples I have seen (the one above for instance), this was not the case.
Other then such two specific cases, I see only drawbacks with such approach:
out
parameters memory on its own, which leads to code duplication and possible slippery bugs.
out
parameters and decide a default behavior when it's not initialized (internal initializing / throwing exception / returning empty or default value).
So, can you think of any benefits, or a general criteria for cases that should return out
values?