From: Justin Gombos <rpbkbq.xax.gld@uluv.kbq>
Subject: Re: private types
Date: Fri, 17 Mar 2006 22:50:30 GMT
Date: 2006-03-17T22:50:30+00:00 [thread overview]
Message-ID: <W2HSf.127$wD1.21@trnddc02> (raw)
In-Reply-To: sa4hd5x1wgd.fsf@snoopy.microcomaustralia.com.au
On 2006-03-17, Brian May <bam@snoopy.apana.org.au> wrote:
> I am not sure how this:
>
> function exists return boolean is
>
> --Later assignment to found_it is evitable
> --
> found_it : boolean := false;
>
> begin
>
> if some_precondition then
>
> found_it := some_other_condition;
>
> end if;
>
> return found_it;
>
> end exists;
>
> Is any better/worse then this:
>
> function exists return boolean is
>
> --Later assignment to found_it is evitable
> --
> found_it : boolean;
>
> begin
>
> if some_precondition then
>
> found_it := some_other_condition;
>
> end if;
>
> return found_it;
>
> end exists;
The second case is obviously careless, and as you say, unpredictible.
The first case is a good approach, as is this alternative:
function exists return boolean is
--Later assignment to found_it is inevitable
--
found_it : boolean;
begin
if some_precondition then
found_it := some_other_condition;
else
found_it := a_different_condition;
end if;
return found_it;
end exists;
My main purpose was to put the spotlight on this foolish practice:
function exists return boolean is
--Later assignment to found_it is inevitable
--
found_it : boolean := false; --needless and misleading initialization
begin
if some_precondition then
found_it := some_other_condition;
else
found_it := a_different_condition;
end if;
return found_it;
end exists;
Users of the OPs API might be forced into this scenario if the API is
constructed to force explicit initialization on instantiation.
> It is possible a smart compiler might trigger a warning in the
> second case - but this depends on you noticing the warning and
> investigating it. There are cases when the compiler might get
> confused and produce false positives or false negatives.
>
> Otherwise, the above problem is a problem that can only be found
> either by careful inspection of the code or by proper testing.
Sure there are multiple opportunities to find flaws; but the idea is
to not depend on them more than we have to.
--
PM instructions: do a C4esar Ciph3r on my address; retain punctuation.
next prev parent reply other threads:[~2006-03-17 22:50 UTC|newest]
Thread overview: 93+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-03-13 19:58 private types ada_student
2006-03-13 20:27 ` Mark Lorenzen
2006-03-13 21:05 ` Pascal Obry
2006-03-13 21:07 ` ada_student
2006-03-13 21:45 ` Simon Wright
2006-03-14 4:51 ` Jeffrey R. Carter
2006-03-14 7:44 ` Brian May
2006-03-14 8:25 ` Ludovic Brenta
2006-03-14 8:47 ` Alex R. Mosteo
2006-03-17 4:33 ` Justin Gombos
2006-03-17 5:17 ` Brian May
2006-03-17 22:50 ` Justin Gombos [this message]
2006-03-18 1:17 ` Randy Brukardt
2006-03-18 2:17 ` Justin Gombos
2006-03-21 0:08 ` Randy Brukardt
2006-03-18 8:39 ` Uninitialized variables (was: Re: private types) Dirk Craeynest
2006-03-18 14:06 ` Gautier
2006-03-18 14:36 ` Uninitialized variables Jeffrey Creem
2006-03-21 0:22 ` Uninitialized variables (was: Re: private types) Randy Brukardt
2006-03-21 0:38 ` Randy Brukardt
2006-03-18 12:06 ` private types Martin Dowie
2006-03-18 12:47 ` Robert A Duff
2006-03-17 7:40 ` Maciej Sobczak
2006-03-17 16:41 ` Frank J. Lhota
2006-03-17 23:36 ` Justin Gombos
2006-03-18 1:32 ` Randy Brukardt
2006-03-18 3:21 ` Handling invalid objects Justin Gombos
2006-03-18 7:35 ` Jeffrey R. Carter
2006-03-18 16:10 ` Justin Gombos
2006-03-19 11:00 ` Simon Wright
2006-03-20 23:57 ` Randy Brukardt
2006-03-22 2:06 ` Justin Gombos
2006-03-22 5:23 ` tmoran
2006-03-22 8:48 ` Dmitry A. Kazakov
2006-03-22 9:24 ` Maciej Sobczak
2006-03-22 11:05 ` Dmitry A. Kazakov
2006-03-22 16:42 ` Maciej Sobczak
2006-03-22 18:06 ` Stefan Lucks
2006-03-23 13:20 ` Dmitry A. Kazakov
2006-03-18 8:57 ` Jacob Sparre Andersen
2006-03-19 19:07 ` Dr. Adrian Wrigley
2006-03-20 15:25 ` Robert A Duff
2006-03-19 22:06 ` Brian May
2006-03-20 21:17 ` Jeffrey R. Carter
2006-03-20 23:44 ` Randy Brukardt
2006-03-22 1:27 ` Justin Gombos
2006-03-18 9:20 ` private types Dmitry A. Kazakov
2006-03-17 13:18 ` Robert A Duff
2006-03-17 23:44 ` Justin Gombos
2006-03-18 9:24 ` Dmitry A. Kazakov
2006-03-18 12:56 ` Robert A Duff
2006-03-18 15:06 ` Justin Gombos
2006-03-19 9:35 ` Martin Krischik
2006-03-19 14:52 ` Peter C. Chapin
2006-03-19 15:08 ` Björn Persson
2006-03-19 16:34 ` Martin Krischik
2006-03-20 9:57 ` Maciej Sobczak
2006-03-20 10:58 ` Peter C. Chapin
2006-03-20 11:19 ` Peter C. Chapin
2006-03-20 13:06 ` Maciej Sobczak
2006-03-20 15:19 ` Robert A Duff
2006-03-20 16:47 ` James Dennett
2006-03-20 19:12 ` Martin Krischik
2006-03-21 7:27 ` Maciej Sobczak
2006-03-20 19:32 ` Martin Krischik
2006-03-21 7:41 ` Maciej Sobczak
2006-03-20 20:29 ` Simon Wright
2006-03-19 17:43 ` Larry Kilgallen
2006-03-19 22:11 ` Peter C. Chapin
2006-03-19 18:15 ` Robert A Duff
2006-03-19 19:20 ` Martin Krischik
2006-03-19 20:43 ` Dr. Adrian Wrigley
2006-03-20 15:01 ` Robert A Duff
2006-03-27 4:07 ` Dave Thompson
2006-03-20 9:40 ` Maciej Sobczak
2006-03-20 15:09 ` Robert A Duff
2006-03-21 8:07 ` Maciej Sobczak
2006-03-26 18:53 ` Robert A Duff
2006-03-19 19:27 ` Jeffrey R. Carter
2006-03-25 21:40 ` Robert A Duff
2006-03-26 0:10 ` Justin Gombos
2006-03-26 1:00 ` Robert A Duff
2006-03-26 6:37 ` Jeffrey R. Carter
2006-03-26 15:43 ` Justin Gombos
2006-03-26 16:32 ` Robert A Duff
2006-03-26 16:51 ` Robert A Duff
2006-03-26 19:41 ` Jeffrey R. Carter
2006-03-26 3:15 ` Frank J. Lhota
2006-03-26 18:28 ` Robert A Duff
2006-03-26 19:43 ` Jeffrey R. Carter
2006-03-26 19:59 ` Simon Wright
[not found] <bctruong.1.00117123@draper.com>
1999-07-28 0:00 ` Stanley R. Allen
1999-07-28 0:00 ` Thomas Hood
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox