Linked by Thom Holwerda on Tue 15th Jan 2013 21:24 UTC
Thread beginning with comment 548994
To view parent comment, click here.
To read all comments associated with this story, please click here.
To view parent comment, click here.
To read all comments associated with this story, please click here.
Compare that to the C#...
That's badly formatted C#
I prefer the following:
if (X == Null) {
Something();
Somethingelse();
} else if (Blah == "Give up") {
Somemore();
} else {
ShootYourself(DateTime.Now);
}
In my opinion that is significantly more readable than any of the other examples you've listed.
Sometimes I concatenate the lines further:
if (X == Null) {
Something();
Somethingelse();
}
else if (Blah == "Give up") { Somemore(); }
else { ShootYourself(DateTime.Now); }
(this isn't the best of examples (and not helped by the formatting on OSNews), even I wouldn't concatenate specifically here, but sometimes it does aid readability.
edit:
The beauty Pascal is that the entire If is one statement with compounds, the beauty of the C# is that it is not (really.) Both have advantages.
You can use blocks in C-derived languages as well:
{
if (X == Null) {
Something();
Somethingelse();
} else if (Blah == "Give up") {
Somemore();
} else {
ShootYourself(DateTime .Now);
}
}
Edited 2013-01-16 14:10 UTC
Actually apart from the lack of indentation it was correct. The Visual Studio default and the Microsoft Recommended Coding conventions all use that style.
http://blogs.msdn.com/b/brada/archive/2005/01/26/361363.aspx
Open braces should always be at the beginning of the line after the statement that begins the block. Contents of the brace should be indented by 4 spaces.
"
Compare that to the C#...
Compare that to the C#...
That's badly formatted C# "
Your opinion, and bear in mind, OSNews lost my indentation. To me, your code looks suboptimal for readability. I work in a large team, other people picking up classes and libraries I've written is essential. Standard style guides and conformity saves a lot of time and prevents prima donnas. Plus, having come from Pascal, those arguments just waste too much time. Suffice to say:
Lazy programmeritis:
if (x = y) then begin
.....
end else begin
....
end;
I once had a co worker that used this one:
if (x = y) then
begin
...
end
else
begin
end;
And this one:
if (x = y) then
begin
.....
end
else
begin
......
end;
Borland style:
if (x=y) then
begin
...
end;
And that is just scratching the surface and not even dealing with tabs, etc. It's a holy war, not worth winging about.
For C#, the basic layout I use (and enforce here) is based on the standard Microsoft use in all of their sample code. Sorry if you don't like that, complain to someone who has write access to Microsoft's source repository ;-) Visual Studio also usefully formats this way - why fight the IDE?
if ( X == Null )
{
Something();
Somethingelse();
}
else if ( Blah == "Give up" )
{
Somemore();
}
else
{
ShootYourself( DateTime.Now );
}
I never use tabs, they are evil. I use 2 spaces for "Tabstop" because otherwise your code shoots off to the right at great speed. I would go for simple over terse single line every time. I tend to (recently) add in extra space in if/else if/method params. This is just a concession to a speed reading on a high res monitor. Text scans better.
You can use blocks in C-derived languages as well
Not exactly the same thing. In Pascal this is one statement:
if (x = y) then dosomthing else dosomthingelse(y);
and so is this:
if (x = y) then begin dosomthing; end else dosomthingelse(y);
and so is this:
if (x = y) then begin dosomthing; doanotherthing(x); end else begin dosomthingelse(y); end;
dosomething and dosomethingelse(..) are compound, as are the other examples. Like I said, the C syntax is sort of similar, but not exactly. Pascal thinks of the compounds as being part of a single statement, with compound elements. Where as C doesn't (IIRC.) The braces in C are just a way to create a block and the if/else links those blocks together. Semantics, I know. But look again at the basic Pascal version:
if (x = y) then dosomthing else dosomthingelse(y);
That is a pure statement, with no semicolon after the first clause. Geddit? :-) C would require 2 statements linking the blocks:
if (x==y) dosomething(); else dosomthingelse(y);





Member since:
2006-05-30
With ADA (83) we always had a "BEGIN" and an "END xxxx;" for all constructs, save possibly the "REPEAT... UNTIL ...", though it's been a good 20 years since I did any ADA and I don't remember it well. Same with Pascal (Object Pascal; Delphi.) With VB you don't. You get this:
If X Is Nothing Then
Something
Somethingelse
Elseif Blah = "Give up" Then
Somemore
Else
ShootYourself(DateTime.Now)
End If
Compare that to the C#
if (X == Null)
{
Something();
Somethingelse();
}
else if (Blah == "Give up")
{
Somemore();
}
else
{
ShootYourself(DateTime.Now);
}
Or Pascal
if (X <> Nil) Then //Or is it "X is nil"? I forget
begin
Something();
Somethingelse();
end
else if (Blah = 'Give up') Then
begin
Somemore();
end
else
begin
ShootYourself(DateTime.Now);
end;
The beauty Pascal is that the entire If is one statement with compounds, the beauty of the C# is that it is not (really.) Both have advantages.
EDIT: remembering to add the actual point: The blocks make it easy to see what belongs where, where as with VB and other non block delimited languages, it's all about context.
The begin/end stuff becomes colorful patches surrounding black code.
Yeah, that's kind of okay. But again, when the code spans 3 or 4 screens (bad coding practice, horrible to maintain) it's more about refactoring to a sane state initially. Syntax highlighting has come a long way. The first editor I used on a daily basis was Delphi 1 and the syntax highlighting was very simple and the code insight did not exist. You had to actually know what to type - a skill lost by many recent CS graduates.
Edited 2013-01-16 12:35 UTC