A nice way to step into 2012
Don
nospam at nospam.com
Fri Dec 30 16:40:24 PST 2011
On 30.12.2011 07:36, Andrei Alexandrescu wrote:
> On 12/30/11 12:25 AM, Derek wrote:
>> On Fri, 30 Dec 2011 16:22:49 +1100, Don <nospam at nospam.com> wrote:
>>
>>
>>> Some names are better than others. But are they part of the API?
>>> That's the issue.
>>
>> Yes, that is an issue.
>>
>>> Often, parameter names (such as in sin(x)) are arbitrary and
>>> meaningless. This is fundamental: the parameter names are arbitrary in
>>> mathematics.
>>
>> Why is that? I just assumed that it was because mathematicians did a lot
>> of repetitive handwriting and thus brevity was important to them.
>
> Well one non-partisan opinion (in any direction) is I've recently played
> with e.g. Python's POpen
> (http://docs.python.org/library/subprocess.html#subprocess.Popen). It's
> quite comfy to be able to say stdout=somefile, stderr=somefile instead
> of enumerating arguments and relying on order to make them sensible.
>
> Using such functions is not math, but is part of writing programs.
There are definitely cases when you can create a much nicer API, when
you can use named parameters. This is particularly true of flags, and
where there are default parameters.
But I think that (a) it's not _all_ functions; and (b) you probably want
to use named parameters consistently. I think it would be poor form to
write these two lines in the same module:
Popen(args, None, None, somefile, somefile);
Popen(args, stdout : somefile, stderr : somefile);
so in the particular example of Popen, I think *requiring* all those
parameters to be named in all calls wouldn't be a bad thing. Dunno if
that's true in general though.
Note that in C/C++ you can easily create a header file where the
parameters aren't named. But that isn't really available in D.
So there isn't even an opt-out mechanism.
I think: there are cases when named parameters are beneficial. There are
cases where they are detrimental.
Is it possible to get the first, without the second, and without much
complexity?
(I'm thinking of something like, a colon before the parameter name means
the name is part of the API).
More information about the Digitalmars-d
mailing list