[PATCH] D126512: [Docs] Clarify the guideline on omitting braces
Mehdi AMINI via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue May 31 06:56:13 PDT 2022
mehdi_amini added inline comments.
================
Comment at: llvm/docs/CodingStandards.rst:1596-1597
-This list is not exhaustive, for example, readability is also harmed if an
+Similarly, braces should be used when a single-statement body can't fit on a
+single line; otherwise, it would be difficult to see where the block containing
+the following statement began. An ``if``/``else`` chain or a loop is considered
----------------
aaron.ballman wrote:
> erichkeane wrote:
> > mehdi_amini wrote:
> > > owenpan wrote:
> > > > mehdi_amini wrote:
> > > > > This is new and seems overly restrictive to me, why this new change?
> > > > See the second paragraph of the patch summary above. The phrase "complex enough" is too subjective to be useful IMO, but I will withdraw this specific change if you insist.
> > > Subjective isn't always bad :)
> > > The coding standard is designed to leave some room indeed when we can't specify a rule that is always clear cut.
> > I'm not really a fan of this one. I DO really like the 'cascading single-liners', and want to keep those omitting braces. The example @mehdi_amini pointed out is important to me to keep.
> I'd like to make sure we're all reading this the same way, because I don't see this as being restrictive so much as formalizing what I think many reviewers have been asking for anyway. Here's some examples:
> ```
> if (foo) // Old rule: didn't ask for braces, new rule: asks for braces
> bar(1, 2,
> 3, 4);
> ```
> ```
> if (foo) // Old rule: didn't ask for braces, new rule: asks for braces
> bar(1, 2,
> 3, 4);
> else // Old rule: didn't ask for braces, new rule: doesn't ask for braces
> baz(1, 2);
> ```
> ```
> if (foo) // Old rule: didn't ask for braces, new rule: doesn't ask for braces
> baz(1, 2);
> else // Old rule: didn't ask for braces, new rule: asks for braces
> bar(1, 2,
> 3, 4);
> ```
> ```
> if (foo) // Old rule: didn't ask for braces, new rule: doesn't ask for braces
> if (bar) // Old rule: didn't ask for braces, new rule: doesn't ask for braces
> baz(1, 2);
> ```
> ```
> if (foo) // Old rule: didn't ask for braces, new rule: asks for braces
> if (bar(1, 2,
> 3, 4)) // Old rule: didn't ask for braces, new rule: doesn't ask for braces
> baz(1, 2);
> ```
> ```
> if (foo) // Old rule: didn't ask for braces, new rule: asks for braces
> for (int i = 0; i < 10; ++i) // Old rule: didn't ask for braces, new rule: asks for braces
> baz(i);
> ```
> Am I interpreting this correctly?
>
> (FWIW, I personally think it's better for us to err on recommending braces when they're unnecessary in these more complicated situations because that's the safer, more explicit style.)
Your examples are on point and are the reasons why I see this as a non-trivial policy change. At minima this requires a thread on discourse and a revision separate from the do/while case.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D126512/new/
https://reviews.llvm.org/D126512
More information about the llvm-commits
mailing list