D style guide

Ali Çehreli acehreli at yahoo.com
Mon Jun 17 09:36:49 PDT 2013


Please ignore my comments because they are bike-shedding. I am not sure 
about Phobos coding guidelines.

On 06/17/2013 09:13 AM, Joseph Rushton Wakeling wrote:

 >     * Space after if -- e.g. if (x < 0) not if(x < 0).  This isn't 
cited, and in
 >       fact the example given (at the end of the page) has no space 
after if.
 >       Also, what about other statements such as while, for, foreach, 
etc.?

I want that space. It is very common in most C++ guidelines as well.

 >     * Full bracing.  It's mentioned that opening braces should be on 
their own
 >       line, but not that braces should be used even in the case of 
single-line
 >       statements, i.e. that one should do,
 >
 >           if (x < 0)
 >           {
 >               negative = true;
 >           }
 >           else
 >           {
 >               negative = false;
 >           }
 >
 >       and not
 >
 >           if (x < 0)
 >               negative = true;
 >           else
 >               negative = false;

Yes, curly brackets are very helpful in readability even when there is 
no reason.

 >     * Use of brackets around sides of a conditional, e.g. to write
 >
 >           if (x + y < w * z)
 >
 >       and not
 >
 >           if ((x + y) < (w * z))

I am on the other side on that one: Use parentheses to show intent even 
when unnecessary.

 > I'd also appreciate guidelines about template if statements and 
indentation: is
 > it preferred to write e.g.
 >
 >      auto func(R)(R input)
 >          if(isInputRange!R)
 >      {
 >          ...
 >      }
 >
 > or,
 >
 >      auto func(R)(R input)
 >      if(isInputRange!R)
 >      {
 >          ...
 >      }
 >
 > I see both in Phobos.  I must say I prefer the former, as it somehow 
highlights
 > the presence of the 'if' statement

Me too: Indentation helps with readability.

 > Same for in/out contracts: is it preferred to have,
 >
 >      auto func(...)
 >          in
 >          {
 >              ...
 >          }
 >          out
 >          {
 >              ...
 >          }
 >      body
 >      {
 >          ...
 >      }
 >
 > ... or all on the same indentation level?  (Again, I personally 
prefer the
 > indentation of the in/out blocks.)

I don't like that indentation.

I know that Phobos wants the opening curly bracket on its own and that's 
what I am used to elsewhere, but I have gotten used to seeing it at the 
end of the previous line. Except, I still don't like it for functions 
(member or regular), structs, classes, version, etc. I think I like it 
only after control-flow keywords like if, foreach, while, etc.

But if we go with others' preference, then I have seen code like this:

auto func(...)
in {
     ...

} out {
     ...

} body {
     ...
}

Getting back to your question: I don't know. :p

Ali



More information about the Digitalmars-d-learn mailing list