Thread overview
Body of Programming
May 07, 2004
Andy Friesen
May 07, 2004
clayasaurus
May 08, 2004
Brad Anderson
indenting D was Re: Body of Programming
May 08, 2004
Mark T
May 07, 2004
I have a suggestion that will drastically improve the look of D. Instead of using brackets to begin and terminate functions and definitions, use some sort of an end statement for to designate the termination of functions, control structures, and class definitions. C++'s failure to do this has resulted in the confusion of many a programmer as to where a function\class definition\control structure would begin and end.

For example:  for (int i = 0; i <= 20; i++) {
// perform actions
int value = 0;
for (int k = 0; k = 4; k++) {
doSomething(value)
switch (value) {
//cases
}
}
}

Would confuse someone when looking for where the loops and switches begin and end. Plus if someone were to practice good programming style, they would have to // end for or // end switch at every end bracket, which is nerve wrecking.

What I propose is to have D do this:

for (int i = 0; i <= 20; i++) :
// perform actions
int value = 0;
for (int k = 0; k = 4; k++) :
doSomething(value)
switch (value) :
//cases
:end switch
:end for
:end for

Notice the difference? I clearly delineated the beginning and the ending of each control structure and function. This also brings the language closer to human language, making it more understandable. I base my findings directly on the languages of Perl and PHP, as they have adopted the same conventions that not only encourage good programming practices, but also is easier to follow.



Robert Vincent Abrams III
May 07, 2004
I'm sorry to say but that idea would be actually bad, just see why VB is hated by many: it's way too verbose, this would increase the verbosity of D in a large amount.

Ivan "Killer927" Cebola


May 07, 2004
Robert V. Abrams III wrote:

> For example:  for (int i = 0; i <= 20; i++) {
> // perform actions int value = 0;
> for (int k = 0; k = 4; k++) {
> doSomething(value)
> switch (value) {
> //cases
> }
> }
> }

You're just excusing spaghetti code.... that's the problem I'm seeing... I would write it as:

	for (int i = 0; i <= 20; i++)
	{
		int value = 0;

		// Perform actions.
		for (int k = 0; k = 4; k++)
		{
			doSomething(value);

			switch (value)
			{
				// Cases here.
			}
		}
	}

Looks totally clear to me when written up properly.  Conversely, using endwhile etc. (things that are DEPRECATED in PHP...) only makes the code ugly and makes it more excusable to use spaghetti code...

-[Unknown]
May 07, 2004
Unknown W. Brackets wrote:
>         for (int k = 0; k = 4; k++)

Not my mistake, but this should be:

		for (int k = 0; k <= 4; k++)

Or:

		for (int k = 0; k != 4; k++)

See what you find when you indent properly?

-[Unknown]
May 07, 2004
Robert V. Abrams III wrote:
> Would confuse someone when looking for where the loops and switches begin and
> end. Plus if someone were to practice good programming style, they would have to
> // end for or // end switch at every end bracket, which is nerve wrecking. 

The only place where I would think this necessary is when using syntactic contortions like the venerable Duff's device, which nobody in their right mind should be using anyway.

Maybe it would be sensible if the body of the loop doesn't fit onscreen, but you have other, far more pressing problems to worry about if that's the case.

> What I propose is to have D do this:
> 
> for (int i = 0; i <= 20; i++) : // perform actions int value = 0;
> for (int k = 0; k = 4; k++) :
> doSomething(value)
> switch (value) : //cases
> :end switch
> :end for
> :end for
> 
> Notice the difference?

Nope.  It's still a big opaque mess.

Even worse, it's more cluttery even if formatted correctly.  It's excessive, verbose syntax for something that's completely self-evident to any sane human being. (ie anyone who indents their code properly)

 -- andy
May 07, 2004
>> What I propose is to have D do this:
>> 
>> for (int i = 0; i <= 20; i++) :
>> // perform actions
>> int value = 0;
>> for (int k = 0; k = 4; k++) :
>> doSomething(value)
>> switch (value) :
>> //cases
>> :end switch
>> :end for
>> :end for
>> 
>> Notice the difference?

I'm not a fan of that, however i see what you mean. This problem can easily be solved if someone take time to comment their loops like

switch()
{
for ()
{
if ()
{
} // end if
} // end for

} // end switch()

being able to use the tab helps a lot. i kind of see what you mean, but if there was built in language support for this is should use better syntax like

switch()
{
for ()
{
if ()
{
} end if
} end for

} end switch()

or people should be able to comment that part in themselves.


May 08, 2004
I guess what you can take from these responses, in a word, is :  "indent"

Indent your code clearly, and things begin to make sense.  Try Jalopy for Java code:  http://jalopy.sourceforge.net/

Better yet, re-write this utility in D.  It will clearly delineate your code, no matter if you receive it like the big opaque block you proposed.  Send it through your Dalopy utility (hosted at dsource.org, of course) and you'd see the code clear as day.

BA

Robert V. Abrams III wrote:

> I have a suggestion that will drastically improve the look of D. Instead of
> using brackets to begin and terminate functions and definitions, use some sort
> of an end statement for to designate the termination of functions, control
> structures, and class definitions. C++'s failure to do this has resulted in the
> confusion of many a programmer as to where a function\class definition\control
> structure would begin and end. 
> 
> For example:  for (int i = 0; i <= 20; i++) {
> // perform actions int value = 0;
> for (int k = 0; k = 4; k++) {
> doSomething(value)
> switch (value) {
> //cases
> }
> }
> }
> 
> Would confuse someone when looking for where the loops and switches begin and
> end. Plus if someone were to practice good programming style, they would have to
> // end for or // end switch at every end bracket, which is nerve wrecking. 
> 
> What I propose is to have D do this:
> 
> for (int i = 0; i <= 20; i++) : // perform actions int value = 0;
> for (int k = 0; k = 4; k++) :
> doSomething(value)
> switch (value) : //cases
> :end switch
> :end for
> :end for
> 
> Notice the difference? I clearly delineated the beginning and the ending of each
> control structure and function. This also brings the language closer to human
> language, making it more understandable. I base my findings directly on the
> languages of Perl and PHP, as they have adopted the same conventions that not
> only encourage good programming practices, but also is easier to follow.
> 
> 
> 
> Robert Vincent Abrams III
May 08, 2004
In article <c7hnlh$2n15$3@digitaldaemon.com>, Brad Anderson says...
>
>I guess what you can take from these responses, in a word, is :  "indent"
>
>Indent your code clearly, and things begin to make sense.  Try Jalopy for Java code:  http://jalopy.sourceforge.net/
>
>Better yet, re-write this utility in D

Artistic Style would probably do this already (I haven't tried yet) and would
probably much easier to add D capability.
http://astyle.sourceforge.net/