comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: if-then-no-else Programming
Date: Tue, 19 Apr 2016 09:55:59 +0200
Date: 2016-04-19T09:55:59+02:00	[thread overview]
Message-ID: <nf4ob7$1ict$1@gioia.aioe.org> (raw)
In-Reply-To: 1mlx1gf.ebrae11jak5tyN%csampson@inetworld.net

On 19/04/2016 04:24, Charles H. Sampson wrote:
> It's hard to believe that it's been over six years since I wrote a line
> of code for profit. If what my son tells me, there's been what I
> consider a major change in software engineering during that time.
>
> He says that there's a move to ban the use of the else-statement. The
> preferred approach is to execute the else-part first, then change the
> effect if the if-condition is satisfied. For example:
>
>     Variable := 3;
>     if <condtion> then
>        Variable := 1;
>     end if;
>
> In addition to some other goodness attributes, this is supposed to be
> clearer than the if-then-else form.
>
> Is he right? (He's not really a coder. His experience is in wire-frame
> animation but he's being forced into coding by the job market.) If he's
> not right, have any of you even heard of an area of the software
> "profession" where this position is held?

There are only few cases when asymmetric if-then is ever used.

1. Initialized default

    Variable : Integer := 3;
begin
    ...
    if <condition> then
       Variable := 1;
    end if;

Similar case is bulk initialization of arrays:

    Variable : String (1..80) := (others => ' ');
begin
    ...
    if <condition> then
       Variable (20) := 'a';
    end if;

2. Unbalanced terminating alternative. When THEN is very short and 
terminates some execution control path:

procedure Foo (Variable : out Integer) is
begin
    ...
    if <condition> then
       Variable := 1;
       return;
    end if;
    ... -- Do a lot of stuff
end Foo;

It could be "raise" instead of return, or "exit" when the variable is 
set as the result of a loop execution.

Otherwise, the advice is evident rubbish, as others have pointed out 
already.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de

  parent reply	other threads:[~2016-04-19  7:55 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-19  2:24 if-then-no-else Programming Charles H. Sampson
2016-04-19  3:08 ` Dennis Lee Bieber
2016-04-19  3:19 ` Jeffrey R. Carter
2016-04-19  6:18 ` Nasser M. Abbasi
2016-04-19  7:55 ` Dmitry A. Kazakov [this message]
2016-04-19 12:17 ` G.B.
2016-04-20 22:26   ` Martin
2016-04-19 13:27 ` gautier_niouzes
2016-04-19 19:51 ` Randy Brukardt
2016-04-19 22:40   ` Shark8
2016-04-20 22:35     ` Randy Brukardt
2016-04-20  7:56   ` Charles H. Sampson
2016-04-20 11:26     ` Dennis Lee Bieber
2016-04-20 12:32       ` G.B.
2016-04-20 12:36         ` G.B.
2016-04-20 23:07     ` Jeffrey R. Carter
2016-04-19 20:32 ` Charles H. Sampson
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox