- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Mon, 9 Jul 2012 09:52:53 -0700
- To: Ryosuke Niwa <rniwa@webkit.org>
- Cc: James Graham <jgraham@opera.com>, public-webapps@w3.org
On Mon, Jul 9, 2012 at 9:41 AM, Ryosuke Niwa <rniwa@webkit.org> wrote: > On Mon, Jul 9, 2012 at 7:30 AM, Tab Atkins Jr. <jackalmage@gmail.com> wrote: >> On Fri, Jul 6, 2012 at 12:09 PM, Ryosuke Niwa <rniwa@webkit.org> wrote: >> > Okay, it appears to be a miscommunication of terminology here. What I >> > meant >> > is DOM APIs in your definition. As Adam said, API fashions come and go. >> > We >> > should be making new DOM APIs consistent with existing DOM APIs. >> >> While API fashions do change, this doesn't appear to be a fashion. A >> ton of popular libraries have been doing this for years, and it >> doesn't seem to be flagging. Language-supported variations of this >> pattern exist in other popular languages as well, such as Python. > > Yeah, and Python does all other things I don't like e.g. using indentation > instead of { } or begin/end. Irrelevant to the discussion. Nobody's suggesting to adopt other Pythonisms. I was just pointing to Python to support my assertion that this is now a very popular pattern, not a transient fashion. > Also, we're not forced to use named arguments > in Python. If we have a function like: > > def transact(execute, undo, redo): > ~~ > > you can call it as either: > transact(execute=a, undo=b, redo=c) > or > transact(a, b, c) Yes, and it would be wonderful if JS had similar support so that we could easily accommodate both patterns. It doesn't, and so we have to choose one or the other. > On the other hand, other popular programming languages like Java and C++ > don't support named arguments. Of course. They, like the DOM APIs, are old (hell, C++ is older than you or me). Evolution happens. >>> I personally find "named arguments" in various library functions >>> annoying >>> especially when there are only few arguments. e.g. >>> parent.appendChild({child: node}); would be silly. >> >> Come on, Ryosuke, don't strawman. Obviously when there's only a >> single argument, there's no concerns about remembering the order. Two >> args are often fine, but PHP shows us quite clearly that's it's easy >> to screw that up and make it hard to remember (see the persistent >> confusion in PHP search functions about whether the needle or haystack >> comes first). Three and up, you should definitely use named args >> unless there's a strong logical order. (For example, an API taking a >> source and dest rectangle can reasonably support 8 ordered args, >> because "x,y,w,h" and "source,dest" are strong logical orders.) > > In our case, there's a clear logical ordering: execute, undo, redo. I don't get it. That doesn't seem like a logical ordering to me. By that I mean, there's no clear reason for me to assume, having not used this API before, that they should appear in that order, nor is there an existing well-established pattern across many other APIs that they appear in that particular order. ~TJ
Received on Monday, 9 July 2012 16:53:45 UTC