On Saturday, 16 June 2012 at 09:31:35 UTC, Tommi wrote:
Do you consider it to be good or bad style of programming to use consistently auto as function return type?

One of the pros is that it saves some redundant typing when the function returns some complex templated type:

auto getValue()
{
    return MyType!(int, "asdf", 64).init;
}

But one of the cons is that you don't see what the function returns just by looking at the signature.

Are there some more severe issues that I'm missing?

I've wondered a bit of this myself. I tend to have all my function return types explicit and tend to use auto more for values returned when I am going to be using them right away, or they vary slightly on type (but not function).

Being as D is not C++ (with it's template system), it can still parse and make sense of a majority of the code but lacking a specific return type... I want to say it's a potential pitfall and trap for later. If it only returns a basic type then the problem isn't as severe since implicit casting can take place to fix minor variations of type (real/double, int/long, etc).

Perhaps a suggestion on use, where auto should be used: As a lambda return type, or functions that return simple base types? Not to say it would prevent you from from using auto, but then the potential damage is lessened. Perhaps a bigger problem is that auto would hide type changes and potential problems because it was auto, but regarding templates with that I don't know. Mmmm... I need more experience.

Reply via email to