All -

I must agree with Dave here. As someone who trains others in Web development, the original DOM method names make sense. I can break them down this way for my students:

getElementById()

get -> It's gonna return something
Element -> It's gonna return nodes of type Node.ELEMENT_NODE
ById -> It's gonna use 'id' as its criteria.

Unfortunately, both the Mozilla folks and the IE folks have begun to deviate from this path for XPath:

<XPathExpression>.evaluate() -> Execute an XPath on Mozilla (this is the DOM L3 spec method name, unfortunately) <node>.selectNodes() / <node>.selectSingleNodes() -> Execute an XPath on IE

The problem is, as Dave pointed out, what does 'evaluate', 'selectNodes', 'selectSingleNode' mean? Those can apply to any one of the 3 'selection mechanisms' available (XPath, CSS or DOM) and give no clue as to which mechanism is being used.

The W3C has already, for many years, defined these three method names:

getElementById()
getElementsByName()
getElementsByTagName()

Whether folks on this list think that was a mistake is, at this point IMHO, quite late in the game. The pattern has been established.

Therefore, getElementsBySelector() is the natural name following the well-established pattern.

People talk in terms of 'selectors' in CSS so this at least gives a clue as to what selection mechanism is being used (although I guess you could use the term 'XPath selector', I've never heard it in common use).

If experts choose to encode this as $select(...) or whatever, that's their choice. But by the time they're doing that, they're already experts. They can 'alias' $select(...) in their head to getElementsBySelector() almost subconsciously. I introduce the commonly used '$(...)' convenience mechanism to my class *after* I've discussed getElementById() and, from then on, they know '$(...)' as 'a shorthand for getElementById()', not as something in its own right.

Also, at least in ECMAScript, 'match()' is already used for RegExp matching.

Just thought I'd offer the 'in the trench' perspective.

Cheers,

- Bill

P.S. IMO, the DOM L3 XPath spec that Mozilla implements should be changed so that 'evaluate' is 'getNodesByXPath()'.

On Dec 18, 2006, at 4:14 PM, Dave Massy wrote:

Sorry for the delayed response. We've had a big windstorm up here in the Pacific Northwest that continues to leave many without power, internet or phone.

We'd really like to see naming to be meaningful for this and all APIs. The goal should be to have a DOM that holds together as one, and therefore the names matter – they need to seem like one intelligently-designed API. Generic names such as select() and match () don't help anyone unless they are for performing generic operations. To suggest that names don't matter and "aaaaa" is fine is just wrong in our opinion. We need to have an API set that people can read and understand without having to go to reference material all the time to ask themselves "Hmm. Now what does select() do in this particular situation?".

Thanks
-Dave





-----Original Message-----
From: Anne van Kesteren [mailto:[EMAIL PROTECTED]
Sent: Friday, December 15, 2006 3:00 AM
To: Ian Hickson
Cc: Dave Massy; Web API WG (public)
Subject: Re: Selectors API naming

On Fri, 15 Dec 2006 07:58:03 +0100, Ian Hickson <[EMAIL PROTECTED]> wrote:
My only concern here is that we avoid the mistake that was made with
getElementsByTagName and getElementById -- the names should be easy to type and short. I honestly think that if the one-item method is shorter
than about 6 or 7 characters, then we've made a mistake.

You mean longer than?


So I think "matchSelector" is too long. I think "matchSingle" is too
long. I think "select" and "match" are fine.

I'd love to use "select"...


It doesn't matter what the words actually are. I think "aaaaa" is fine
too (though it wouldn't be my first choice). As Maciej points out, we
just have to make sure we don't pick a name that makes everyone just
alias the
method to $ or $$ or something equivalent.

Yeah, I agree with this.


--
Anne van Kesteren
<http://annevankesteren.nl/>
<http://www.opera.com/>


!DSPAM:4587133e165412015135145!





Reply via email to