"The nice thing about standards is that there are so many to choose between".
Subject: Uses of block markers in coding
GNU recommends a standard with block-markers aligned under each other and a
number of people - including myself - find it senseless and
counter-progressive to keep up an older standard resting from old days and
doing the programmer a disfavor.
Too many programmers continue to use a style that originates back to the
days where dumb terminals with one-line memory and line-editors was common.
Those days it could take long time to submit a line to the mainframe. I
have tried it myself and in worst-case situations it could take up to half
a minute to submit a line.
So naturally we put more things into one line. Statements like
if (tempratureM1>=tempratureSTP) {cout << "Warning! Cooling needed";
log(tempratureM1, "Warning);};
all in one line.
When editors became a little faster people started to write:
if (tempratureM1>=tempratureSTP) {
cout << "Warning! Cooling needed"; log(tempratureM1, "Warning); }
which is nicer to look at but would take many seconds more as one more line
has to be submitted.
- - -
Nowadays few people have any problems with waiting for a CR.
But for mysterious reasons a rest from the old forced "standard" remains
among people who use C(++) like languages.
It is still standard to write
if (some_expression) {
statements;
...
}
What the "{" - the marking of the beginning of a block that should be
indented - is doing in the end of the line nobody has yet been able to
explain me.
Why, then, are functions not written as
function foo(parameter1, foo(parameter1, parameter2, ... parameterN) {
statements
...
}
?
In other block-structured languages you of course align block-markers under
each other, allowing for easy scan.
if expression
begin
statement;
...
...
end;
I have yet to see anybody write
if expression begin
statement;
...
...
end;
- - -
Does it matter? Oh, yes it does. A lot. As teacher I know from experience
that programmers has a harder time tracking their own block with a number
of "{"s dancing far out of sight in the right side of the screen. This is
not a matter of experience. No experience can ever make it equally fast to
control structures based on vertically aligned block-markers contra those
where the marker can be found anywhere on a line.
As an amusing result of the weird practice it has been necessary to
recommend a standard where the { }-pair is always used, even though there
is only one statement following an if:
if ($myvarirable1*myvariable2 >= myvariable3*myvariable4+114) {
oneStatement;
}
instead of simply
if ($myvarirable1*myvariable2 >= myvariable3*myvariable4+114)
oneStatement;
Why the need for the extra "{ }"s?
Of course because the the difference between
if ($myvarirable1*myvariable2 >= myvariable3*myvariable4+114)
oneStatement;
(correct) and
if ($myvarirable1*myvariable2 >= myvariable3*myvariable4+114) {
oneStatement;
(wrong) is easily overlooked because of the block marker put away to the right!
But nobody overlooks the difference betweeen
if ($myvarirable1*myvariable2 >= myvariable3*myvariable4+114)
oneStatement;
and
if ($myvarirable1*myvariable2 >= myvariable3*myvariable4+114)
{
oneStatement;
where the missing "}" shines in the eyes.
- - -
We can only hope that some major standard-setters for PHP should make a
rational decision about what standard to choose and not just keep "what we
are used to" for the disadvantage of future generations of programmers.
http://www.gnu.org/prep/standards.htm
http://cs.nmhu.edu/personal/curtis/cs1htmlfiles/essentialssec6.htm
Best regards
SFM
U5com Co Ltd.
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php