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

  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