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
next prev 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