comp.lang.ada
 help / color / mirror / Atom feed
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.




  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