W3C home > Mailing lists > Public > whatwg@whatwg.org > January 2013

Re: [whatwg] [Notifications] Constructor should not have side effects

From: Glenn Maynard <glenn@zewt.org>
Date: Tue, 29 Jan 2013 18:13:01 -0600
Message-ID: <CABirCh86ANPhcXsadzL-vMtP7yYzyN60QtgLK=cHwpxq+XEJ-A@mail.gmail.com>
To: Stewart Brodie <stewart.brodie@antplc.com>
Cc: whatwg@whatwg.org
On Jan 29, 2013 12:07 PM, "Stewart Brodie" <stewart.brodie@antplc.com>
wrote:

> For example, how can you add event listeners to something that doesn't
> exist

yet?  Particularly if you want to use a closure with the new object.
>

The same way as always: just attach the listener.  You can't "miss" events,
since it's guaranteed that no events will be fired before returning to the
event loop.  This is a universal idiom on the platform, FYI.

> Having objects that begin their job when constructed simply avoids an
> > extra step for the user (telling it to start), and reduces the number of
> > possible states (eg. eliminating the UNSENT state), which generally
> > simplifies things. Supporting reuse of objects is generally not a useful
> > optimization (in my experience), so not supporting it also simplifies
> > things a bit. Reducing the number of different-but-equivalent ways of
> > doing the same thing is also generally good API design.
>
> I agree - but I don't see what this has to do with separating construction
> from activation.
>

Object reuse was given as an argument to having a separate send() method,
but allowing object reuse is a bad thing unless there are compelling use
cases for supporting it.


On Tue, Jan 29, 2013 at 12:26 PM, Elliott Sprehn <esprehn@gmail.com> wrote:

> With notifications I can't look at the properties of a
> notification in the web inspector without having it show on me...
>

It doesn't matter if it's being shown or not, if you're just debugging.

Constructors are not verbs. new Notification doesn't mean "show", and new
> XMLHttpRequest doesn't mean "send".
>

I disagree.


> This is pretty standard OO best practices stuff.


I disagree.

Unless you give arguments rather than assertions, there's nothing to argue
against, so all I can do is state my disagreement.  Constructors are
essentially nothing but a different syntax for a function that returns an
object of the same type.  Some languages, like Python, don't even
differentiate the syntax.  There's no implication about side-effects one
way or the other.

-- 
Glenn Maynard
Received on Wednesday, 30 January 2013 00:13:25 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Wednesday, 30 January 2013 18:48:12 GMT