From: David Rasmussen <pinkfloydhomer@yahoo.com>
Subject: Re: Localized Variable Declaration
Date: Fri, 31 May 2002 16:48:29 +0200
Date: 2002-05-31T16:48:29+02:00 [thread overview]
Message-ID: <3CF78D3D.3030400@yahoo.com> (raw)
In-Reply-To: adLJ8.776$i01.53350@news8-gui.server.ntli.net
martin.m.dowie wrote:
> "David Rasmussen" <pinkfloydhomer@yahoo.com> wrote in message
> news:3CF77CDA.3090805@yahoo.com...
>
>>Oh sure, but that is pretty tedious, compared to just a one line
>>variable declation. The point is, to be a bit extreme, that centralized
>>variable declations (e.g. at the "beginning" of the function) as done in
>>C and Pascal, are evil. Variables should be declared close to where they
>>are needed, IMO.
>
>
> Sure, but that's what you get with a declare ... begin ... end. You also get
> to delimit the scope in the example I gave there could have been 100 more
> lines after the 'end' that just didn't need visibility of the local
> variable. Can
> you do that with a 'one line variable declaration'?
>
>
You can do the same thing in C++ by just doing
int whatever(int foo)
{
...
...
{ // local scope starts here
int local = 42;
....
} // and ends here
...
}
very simple IMO.
So you can do the same in C++ as in Ada, and more. It's usually the
other way around. And usually Ada has a good reason for doing things
they way it does it. I just don't understand the justification for this
limitation. Consider this:
void something()
{
cout << "Write two numbers: ";
int a;
cin >> a;
int b;
cin >> b;
double c = a * b * 42.42;
}
This demonstrates very much what I mean. Variables aren't declared until
they can immediately be given a value, even by initialization or by some
sort of assignment immediately after declaration. This is easier to read
and understand and minimizes bugs with uninitialized values etc. Compare
it to:
void something()
{
int a,b;
double c;
cout << "Write two numbers: ";
cin >> a;
cin >> b;
c = a * b * 42.42;
}
I admit that in this simple example, the second looks simpler, but
still, the types of variables are taken away from the local place where
they are used, and variables aren't initialized when they are declared.
In larger functions and larger programs in general, it makes a
difference. Now, of course this can be done in Ada with the declare
block, but it will be much more tedious and harder to read.
/David
next prev parent reply other threads:[~2002-05-31 14:48 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-05-31 13:24 Localized Variable Declaration David Rasmussen
2002-05-31 13:32 ` martin.m.dowie
2002-05-31 13:38 ` David Rasmussen
2002-05-31 13:50 ` martin.m.dowie
2002-05-31 14:48 ` David Rasmussen [this message]
2002-05-31 15:26 ` martin.m.dowie
2002-05-31 15:45 ` David Rasmussen
2002-05-31 18:30 ` Jeffrey Carter
2002-06-02 2:21 ` steve_H
2002-06-02 9:59 ` David Rasmussen
2002-06-02 15:06 ` Robert Dewar
2002-06-02 15:27 ` David Rasmussen
2002-06-02 23:25 ` Hyman Rosen
2002-06-02 23:28 ` David Rasmussen
2002-06-02 23:52 ` martin.m.dowie
2002-06-02 23:58 ` David Rasmussen
2002-06-03 11:22 ` martin.m.dowie
2002-05-31 15:51 ` Mark Johnson
2002-05-31 17:47 ` martin.m.dowie
2002-05-31 21:53 ` tmoran
2002-06-02 15:10 ` Robert Dewar
2002-06-02 15:28 ` Vinzent Hoefler
2002-06-02 18:04 ` tmoran
2002-06-07 3:32 ` Richard Riehle
2002-05-31 15:59 ` Darren New
2002-06-02 15:20 ` Robert Dewar
2002-06-03 5:29 ` Michael Bode
2002-06-03 6:17 ` Preben Randhol
2002-06-04 10:26 ` Simon Wright
2002-06-03 13:59 ` Marin David Condic
2002-06-05 8:36 ` Dmitry A.Kazakov
2002-06-03 17:29 ` Pascal Obry
2002-06-16 23:34 ` Robert A Duff
2002-06-04 12:13 ` Georg Bauhaus
2002-05-31 19:00 ` Mike Silva
2002-06-01 0:58 ` Robert Dewar
2002-05-31 18:04 ` Larry Kilgallen
2002-05-31 15:06 ` Marin David Condic
2002-06-01 14:53 ` Stephen Leake
2002-06-02 21:18 ` Florian Weimer
2002-06-11 7:16 ` David Thompson
2002-05-31 18:30 ` Stephen Leake
2002-06-02 1:52 ` Stefan Skoglund
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox