Pretty please: Named arguments
dsimcha
dsimcha at yahoo.com
Mon Feb 28 17:58:58 PST 2011
On 2/28/2011 8:48 PM, Andrei Alexandrescu wrote:
> On 2/28/11 6:03 PM, Jonathan M Davis wrote:
>> The more I think about this, the more I'm against the idea of named
>> arguments.
>
> I think you have been blessed to work with only small, clean APIs.
> Certain domains definitely promote large argument lists. Though the
> designs could certainly be refactored to e.g. group parameters into
> separate objects, it's overkill to do that. I'm afraid sheer experience
> is showing that your counterarguments are not based.
>
> Andrei
>
Agreed. I don't know how many times, when designing an API, I've
considered making something configurable and instead just hard coded it
to avoid bloating things with yet another regular (must be passed
in-order) function argument or (if I put the options in a struct) yet
another type. Besides, using structs to hold options requires
boilerplate for the user of the library. What would you rather write?
A:
Options options;
options.someOption = someValue;
fun(mandatoryArg1, mandatoryArg2, options);
B:
fun(mandatoryArg1, mandatoryArg2, someOption = someValue);
The beauty of named arguments with defaults is that they allow you to
make things configurable with as little boilerplate code as possible for
the library writer and as little boilerplate as possible for the user in
the case where such configurability isn't needed.
More information about the Digitalmars-d
mailing list