From: Jonathan Nieder Date: Sun, 10 Jun 2012 20:22:05 GMT Subject: Re: [PATCH/RFC] Documenation update: use of braces in if/else if/else chain Message-ID: <20120610202205.GA2052@burratino> In-Reply-To: <1339349190-84552-1-git-send-email-muhtasib@gmail.com> Hi, Leila Muhtasib wrote: > --- a/Documentation/CodingGuidelines > +++ b/Documentation/CodingGuidelines > @@ -117,9 +117,26 @@ For C programs: > > is frowned upon. A gray area is when the statement extends > over a few lines, and/or you have a lengthy comment atop of > - it. Also, like in the Linux kernel, if there is a long list > - of "else if" statements, it can make sense to add braces to > - single line blocks. > + it. Also, like in the Linux kernel, if one of the > + "if/else if/else" chain has a multiple statement block, use {} > + even for a single statement block in that chain. And "else" > + should come on the same line as the closing "}" of its "if" block. I don't think that's quite accurate. Current best practice in both git and the Linux kernel is a little looser than that. > + > + //correct > + if (bla) { > + x = 1; > + ... > + } else { > + x = 2; > + } True. > + > + //incorrect > + if (bla) { > + x = 1; > + ... > + } > + else > + x = 2; Also true. But: /* correct */ if (bla) { x = 1; ... } else x = 2; And: If you have a long "if" with a one-line "else", consider whether you are needlessly keeping the reader in suspense about something simple. It might be more pleasant to read with the exceptional case up front: if (!bla) { x = 2; } else { x = 1; ... } This is especially true when the exceptional case returns or exits. if (bla && no_bla) return error("--blah and --no-blah cannot be used together"); x = 1; ... Hope that helps, Jonathan