diff options
author | Chris Lattner <sabre@nondot.org> | 2009-07-28 22:54:04 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-07-28 22:54:04 +0000 |
commit | 9eb7e0aa57c189c0b81a291079f7934a039e9f73 (patch) | |
tree | e09cbb805e11e1296e6b8c732418fbb458affbb6 /docs/CodingStandards.html | |
parent | cf593a3f433cd6acdb6dffb1afbb6367b105b789 (diff) | |
download | external_llvm-9eb7e0aa57c189c0b81a291079f7934a039e9f73.zip external_llvm-9eb7e0aa57c189c0b81a291079f7934a039e9f73.tar.gz external_llvm-9eb7e0aa57c189c0b81a291079f7934a039e9f73.tar.bz2 |
discourage else after "noreturn" statements.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77387 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs/CodingStandards.html')
-rw-r--r-- | docs/CodingStandards.html | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/docs/CodingStandards.html b/docs/CodingStandards.html index f66a7c2..2fe3bdc 100644 --- a/docs/CodingStandards.html +++ b/docs/CodingStandards.html @@ -43,6 +43,8 @@ Private</a></li> <li><a href="#hl_earlyexit">Use Early Exits and 'continue' to Simplify Code</a></li> + <li><a href="#hl_else_after_return">Don't use "else" after a + return</a></li> <li><a href="#hl_predicateloops">Turn Predicate Loops into Predicate Functions</a></li> </ol></li> @@ -624,6 +626,88 @@ be a big understandability win.</p> </div> +<!-- _______________________________________________________________________ --> +<div class="doc_subsubsection"> + <a name="hl_else_after_return">Don't use "else" after a return</a> +</div> + +<div class="doc_text"> + +<p>For similar reasons above (reduction of indentation and easier reading), + please do not use "else" or "else if" after something that interrupts + control flow like return, break, continue, goto, etc. For example, this is + "bad":</p> + +<div class="doc_code"> +<pre> + case 'J': { + if (Signed) { + Type = Context.getsigjmp_bufType(); + if (Type.isNull()) { + Error = ASTContext::GE_Missing_sigjmp_buf; + return QualType(); + } else { + break; + } + } else { + Type = Context.getjmp_bufType(); + if (Type.isNull()) { + Error = ASTContext::GE_Missing_jmp_buf; + return QualType(); + } else { + break; + } + } + } + } +</pre> +</div> + +<p>It is better to write this something like:</p> + +<div class="doc_code"> +<pre> + case 'J': + if (Signed) { + Type = Context.getsigjmp_bufType(); + if (Type.isNull()) { + Error = ASTContext::GE_Missing_sigjmp_buf; + return QualType(); + } + } else { + Type = Context.getjmp_bufType(); + if (Type.isNull()) { + Error = ASTContext::GE_Missing_jmp_buf; + return QualType(); + } + } + break; +</pre> +</div> + +<p>Or better yet (in this case), as:</p> + +<div class="doc_code"> +<pre> + case 'J': + if (Signed) + Type = Context.getsigjmp_bufType(); + else + Type = Context.getjmp_bufType(); + + if (Type.isNull()) { + Error = Signed ? ASTContext::GE_Missing_sigjmp_buf : + ASTContext::GE_Missing_jmp_buf; + return QualType(); + } + break; +</pre> +</div> + +<p>The idea is to reduce indentation and the amount of code you have to keep + track of when reading the code.</p> + +</div> <!-- _______________________________________________________________________ --> <div class="doc_subsubsection"> |