Pretty please: Named arguments
Steven Schveighoffer
schveiguy at yahoo.com
Tue Mar 1 03:53:15 PST 2011
On Tue, 01 Mar 2011 04:10:12 -0500, Don <nospam at nospam.com> wrote:
> Steven Schveighoffer wrote:
>> On Mon, 28 Feb 2011 16:38:34 -0500, Don <nospam at nospam.com> wrote:
>>
>>> spir wrote:
>>>> Just don't use them!
>>>
>>> You don't have that option. At least, if you're a library developer,
>>> you don't. (I'm a bit sick of people saying "you don't have to use it
>>> if you don't want to" in language design. If it is in the language,
>>> you don't have a choice. You will encounter it).
>> encounter *reading* it or encounter *using it*? You shouldn't ever
>> have to use named parameters if you don't want to. Just like you can
>> specify all defaulted parameters, or specify all template args when
>> calling templated functions.
>> I could live without named parameters (obviously!), but I certainly
>> think reading a call with named parameters can be much easier with the
>> parameter names than without, and I don't think you could ever say the
>> opposite (that name-less parameters would be clearer).
>
> For sure they can be clearer with nameless parameters!
>
> printf(formatstr: "Hello World!\n");
This is not less clear than printf("Hello World!\n"); It's as clear.
More verbose, yes, but clear.
Just like foo!int(1) is as clear as, but more verbose than, foo(1).
>> In essense, the parameter names are ALREADY an essential part of the
>> API. If we didn't name the parameters (entirely possible with .di
>> files!), how shitty would programming be?
>
> The names are for humans to read. They are documentation. That's a big
> difference.
And they continue to be documentation, I'm documenting what my argument
names are at the call site so I don't have to go back to the function
definition to determine what each parameter is via position.
Regarding your objection in another post, I see your point that you don't
want to break existing code by changing a parameter name. A way to look
at this is, you must choose good parameter names on the first try.
Another way to look at it is, I'm documenting my function call -- I want
to be notified by the compiler when the parameter names changed because I
want to reassure myself that the call is still valid. My point is, the
function author should choose good names, but if he must make a change,
then fear of breaking calls should not dissuade him. We routinely change
the names of functions or deprecate them, this is taken in stride by the
users of the library, I don't see how changing parameter names is any
different.
-Steve
More information about the Digitalmars-d
mailing list