From: Nick Leaton <nickle@calfp.co.uk>
Subject: Re: Visibility and access to "public" attributes
Date: 1997/09/05
Date: 1997-09-05T00:00:00+00:00 [thread overview]
Message-ID: <341036E9.376A0CA3@calfp.co.uk> (raw)
In-Reply-To: 01bcba0e$418f7380$2001df0a@gavinspc
Gavin Collings wrote:
>
> Nick Leaton <nickle@calfp.co.uk> wrote in article
> <34101640.8CF27E0@calfp.co.uk>...
> >
> > I did a quick bit of analysis on some Eiffel software.
> >
> > 193 set_attribute features in 1085 classes, consisting of 84,000 lines
> > of code.
> >
> > This is a very low figure compared to the number of attributes. I think
> > the explaination lies with class invariants.
>
> Yes, 1 in every 5-6 classes is quite low, but not insignificant. I would
> imagine from the number of classes in the sample that a good representative
> cross section of application was caught. I'm sure the reason you're
> pointing to is at least a significant factor. In fact (as we found out on
> a circle-ellipse discussion over on comp.object recently) any modifying
> operation which can produce an invariant violating state change in an
> object gives problems. Direct attribute writes certainly fall into that
> category more often than other more benign operations.
It is actually much lower than that. If I count the number of classes
containing the set attribute features it comes to 48. (They have more
than one set attribute
feature). The ratio is very low.
> > In other languages where you write lots of set attribute features, you
> > tend to use them to construct an instance of the class. You cannot do
> > this so easily in Eiffel if you have a class invariant, as it must be
> > preserved. As a consequence you tend to write a creation routine, which
> > takes the necessary arguments, so that you can construct such objects
> > without breaking the invariant.
>
> And a very elegant paradigm it is too.
>
> > Since your object is now created, there tend to be fewer attributes that
> > you want to set once it has been created.
>
> Especially if the syntax involved isn't especially sweet, and excessive
> amounts of typing are involved ;-)
Lets save our fingers! ;-)
--
Nick
Eiffel - Possibly the best language in the world - unless proven
otherwise.
next prev parent reply other threads:[~1997-09-05 0:00 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
1997-08-29 0:00 Visibility and access to "public" attributes card
1997-08-29 0:00 ` Patrick Doyle
[not found] ` <JSA.97Aug29190453@alexandria.organon.com>
1997-08-30 0:00 ` Patrick Doyle
1997-08-30 0:00 ` Jon S Anthony
1997-09-01 0:00 ` Patrick Doyle
1997-08-30 0:00 ` Darren New
1997-09-02 0:00 ` Don Harrison
1997-09-02 0:00 ` Peter Horan
1997-09-02 0:00 ` Don Harrison
1997-09-02 0:00 ` Gavin Collings
1997-09-02 0:00 ` Nick Leaton
1997-09-02 0:00 ` Gavin Collings
1997-09-02 0:00 ` Patrick Doyle
1997-09-03 0:00 ` Don Harrison
1997-09-05 0:00 ` Nick Leaton
1997-09-05 0:00 ` Patrick Doyle
[not found] ` <01bcba0e$418f7380$2001df0a@gavinspc>
1997-09-05 0:00 ` Nick Leaton [this message]
1997-09-02 0:00 ` Jon S Anthony
-- strict thread matches above, loose matches on Subject: below --
1997-08-29 0:00 card
1997-08-29 0:00 ` Ted Velkoff
1997-08-30 0:00 ` Darren New
1997-08-30 0:00 ` Patrick Doyle
1997-09-02 0:00 card
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox