Boost logo

Boost Users :

From: Andrew Mellinger (amelling_at_[hidden])
Date: 2007-03-15 14:43:43


On 3/15/07 2:05 PM, "David Abrahams" <dave_at_[hidden]> wrote:

>
> on Thu Mar 15 2007, gast128 <gast128-AT-hotmail.com> wrote:
>
>>>> I agree. At my workplace we have a convention. For heavyweight objects
>>>> that would do interesting things in their constructors we instead use the
>>>> alloc-init paradigm of Objective-C. In this model, the constructor does
>>>> simply non-error things, then a corresponding init (or even suite of init
>>>> methods) does the interesting things. This has the added benefit that the
>>>> init method can be overridden in subclasses, and you don't need to
>>>> re-implement all the behaviors.
>>>
>>> The alloc-init paradigm _really_ sucks. Instead of considering
>>> exceptions in your constructors you end up having to guard all the
>>> rest of the code with "what if this object failed its initialization?"
>>> checks/handlers.
>>>
>> I wouldn't use that strong words. At least you have the advantage to use
>> virtual functions which are not behaving like virtuals in constructors as the
>> orginal poster describes. Buschmann describes in 'posa' the use of MVC in
>> this
>> way.
>
> That's a small convenience, true, but it's hardly worth weakening your
> class invariants to get it.

  I am surprised that my original comment has caused such a strong response.
In my experience there are many ways to solve a problem and there isn't a
silver bullet. We see benefits to alloc-init paradigm for certain classes
that outweigh the construction method. On others we don't do that. I am
surprised (and disappointed) that you choose to lump all uses of the
alloc-init as *_really_ sucks* without understanding our use case.

-Andrew


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net