From: Stephen Leake <stephen_leake@stephe-leake.org>
Subject: Re: Ada and "early return" - opinion/practice question
Date: Mon, 15 Mar 2021 10:31:27 -0700 [thread overview]
Message-ID: <86eegge32o.fsf@stephe-leake.org> (raw)
In-Reply-To: 38356aa9-b8b0-4e0b-a490-99e7b239d0b1n@googlegroups.com
John McCabe <john@mccabe.org.uk> writes:
> I hope this isn't a FAQ (it's hard to find relevant articles) but can
> someone guide me on the 'normal' treatment in Ada style of what
> appears to be referred to (by C/C++ programmers) as early-return.
>
> For example, you have a C++ function (pseudo code sort of thing):
>
> <sometype> fn(<some parameters>)
> {
> if (<some undesirable condition 1>)
> {
> return <something bad happened 1>;
> }
>
> if (<some undesirable condition 2>)
> {
> return <something bad 2>;
> }
>
> if (<some undesirable condition 3>)
> {
> return <something bad 3>;
> }
>
> // Only get here if everything's good...
> <do some real stuff>
> return <something good>;
> }
>
> I've probably mentioned this before, but it's a long time since I used
> Ada in anger and I don't remember seeing stuff like that when I did
> use Ada a lot; does anyone write stuff like that in Ada?
Sometimes I write code that way, sometimes I have a Result variable that
gets set along the way. The latter mostly when Result is a container of
some sort, and parts of it get set at different points.
I would tend to use an exception for "something bad", but that depends
on the overall design.
There are various maintenance issues on both sides; the summary is
"editing existing code is a pain" :(.
> Hope this is ok to ask!
Sure; there are times when one style is overwhelmingly better (ie
requiring matching end names); this just isn't one of them.
--
-- Stephe
next prev parent reply other threads:[~2021-03-15 17:31 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-15 16:46 Ada and "early return" - opinion/practice question John McCabe
2021-03-15 17:02 ` Dmitry A. Kazakov
2021-03-15 17:29 ` John McCabe
2021-03-16 7:08 ` Randy Brukardt
2021-03-15 17:31 ` Stephen Leake [this message]
2021-03-15 17:43 ` John McCabe
2021-03-15 18:15 ` Shark8
2021-03-15 20:39 ` Simon Wright
2021-03-15 20:56 ` Chris Townley
2021-03-16 7:19 ` Stéphane Rivière
2021-03-16 10:31 ` Jeffrey R. Carter
2021-03-16 8:28 ` John McCabe
2021-03-16 20:34 ` Simon Wright
2021-03-17 8:05 ` John McCabe
2021-03-17 11:43 ` Simon Wright
2021-03-18 8:08 ` John McCabe
2021-03-18 16:27 ` Stephen Leake
2021-03-20 13:41 ` John McCabe
2021-03-15 19:05 ` Paul Rubin
2021-03-16 8:38 ` John McCabe
2021-03-16 9:03 ` Stephen Leake
2021-03-16 9:21 ` John McCabe
2021-03-16 8:24 ` John McCabe
2021-03-16 9:13 ` Stephen Leake
2021-03-16 11:51 ` John McCabe
2021-03-16 9:46 ` Dmitry A. Kazakov
2021-03-16 10:46 ` Jeffrey R. Carter
2021-03-17 8:18 ` John McCabe
2021-03-17 10:06 ` AdaMagica
2021-03-15 18:12 ` Shark8
2021-03-15 18:20 ` John McCabe
2021-03-15 19:08 ` Paul Rubin
2021-03-15 19:37 ` Shark8
2021-03-16 7:17 ` Randy Brukardt
2021-03-16 9:26 ` Paul Rubin
2021-03-16 9:53 ` Dmitry A. Kazakov
2021-03-16 9:16 ` Stephen Leake
2021-03-16 11:04 ` Niklas Holsti
2021-03-16 22:49 ` Stephen Leake
2021-03-15 18:37 ` Jeffrey R. Carter
2021-03-15 18:54 ` John McCabe
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox