It was only a little poll, with 35 people responding to these few questions:
- On new line
- On same line
Spaces in control statements (if, foreach, etc)?
- Spaces outside and in ex: if ( this.HadSomeCandy )
- Spaces inside only ex: if( this.HadSomeCandy )
- Spaces outside only ex: if (this.HadSomeCandy)
- No spaces ex: if(this.HadSomeCandy)
Spaces in method calls?
- Spaces outside and in ex: someone.ShouldJustDecide ( "what", "is", "right );
- Spaces inside only ex: someone.ShouldJustDecide( "what", "is", "right" );
- Spaces outside only ex: someone.ShouldJustDecide ("what", "is", "right");
- No spaces ex: someone.ShouldJustDecide("what", "is", "right");
Spaces in method declaration?
So, clearly, the winner is spaces outside/no spaces as in:
if (who.Cares("about coding style?!");
An interesting observation here is that the people who "don't like spaces" are very consistent in their preferences whereas the people who "do like spaces" are much more varied. This is evident in that of the 22 people who voted for spaces outside only in control statements, 19 also voted for no spaces in method calls.
Note that only 25 people answered the question about spaces in indentation because I added it to the poll later. I expect the results would have been much different because it was the people from my office who didn't get to answer and our internal standard is 2 spaces.
For curly braces it was 22 to 13 in favor of braces on a new line.
There were answers for just about every combination, no matter how weird. For example, some people put spaces outside and in for control statements but no spaces in method calls.
The sample size of this poll is too small to actually mean anything, but it is still interesting that the preferences line up pretty closely with Microsoft's coding style standards. I didn't verify this, but I wonder if this could be influenced by Visual Studio's default code style settings.
Personally I was very much in the minority here. For the last five years I've been a spaces outside and in/spaces inside guy as in:
if ( who.Cares( "about coding styles?!" );
I'm also starting to second guess the whole 2 spaces thing. I always preferred it because it made it so you could see more code. But now that I've embraced the SOLID principles, if the lines of code in my methods were so indented as to cause a problem reading them, I'd suspect a "design" problem with that method. And I'm starting to think that 4 spaces would make a pretty big readability difference, since it would be much easier to spot where indentations start and end. I think its especially important if you do curly braces on the end of the line, or if you're writing Python or Haml.
Finally, I always liked the spaces in control flow because I believed it made it easier to read. But when I was preparing this poll I wrote the different styles out side by side and I started to wonder if the spaces actually bring out the "noise" of the different characters... I'm still not sure about this one.
This whole exercise also made we question WHY there is so much possible variation in the languages. Wouldn't it be nice of the details of the language were done in such a way that there was 1 right way to do it and we didn't have to concern ourselves with silly details like where to put spaces?