On Oct 11, 2:40 pm, RobG <[EMAIL PROTECTED]> wrote:
> On Oct 12, 3:29 am, "Justin Perkins" <[EMAIL PROTECTED]> wrote:
>
> > On Sat, Oct 11, 2008 at 10:31 AM, RobG <[EMAIL PROTECTED]> wrote:
> > > Performance is not the issue - fewer lines of code doesn't necessarily
> > > mean faster performance.
>
> > Do you differentiate between browser sniffing and object/method sniffing?
>
> As far as I am aware, there is no such thing as "object/method
> sniffing", it's called object/feature detection.  Browser sniffing is
> using the user agent string or similar to distinguish a particular
> browser.  Object or feature detection is using a test to see if a
> particular object or feature is supported.  It is much more robust and
> requires far less maintenance.
>
> > Do you like that Prototype's Selector#findElements method uses XPATH
> > (Firefox) and querySelector/querySelectorAll (WebKit) when available?
>
> Yes, I just don't like the way it goes about deciding which method to
> used.

What exactly could be done better? Are you referring to getting rid of
`switch` in favor of forking the returning function?

>
> > Or do you think this muddles up the codebase with unnecessary
> > branching?
>
> Not necessarily.  Branching can be avoided where it matters (usually
> for performance reasons) - the feature test need only be carried out
> once and an appropriate method assigned to the identifier that will be
> used to call it.  e.g.
>
> var someMethod = (function () {
>   if ( featureTest ) {
>     return function() { /* function using feature */ };
>   } else {
>     return function() { /* alternative function */ };
>   }
>
> })();
>
> Sometimes you have to wait until the DOM is ready before you can do
> the test, or a body element exists, etc.  In those cases, bottom-
> loading the script helps.  Some functions are not called often enough
> to make it worthwhile.

Redefining function on first invocation works quite nicely in those
cases.

>
> > (not trying to get into a huge discussion, just curious where you draw the 
> > line)
>
> Browser sniffing can nearly always be avoided, sometimes it takes a
> bit of time and effort to work out an appropriate test.  I find that
> once programmers start sniffing, it's very easy to become lazy and
> depend on it when fairly simple alternatives exist.
>
> For example, a little while ago (12 months?) jQuery had 17 browser
> sniffs, it now has 30.  I haven't counted how many there are in
> Prototype.js.

We are slowly getting rid of them where possible.

>
> --
> Rob

--
kangax
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to