[Development] Suggesting update brace placement following a multi-line if condition
Shawn Rutledge
Shawn.Rutledge at qt.io
Thu Jul 16 13:27:43 CEST 2026
On Jul 16, 2026, at 11:14, Marc Mutz via Development <development at qt-project.org> wrote:
Hi,
The current style guide¹ asks for attached braces on if statements, incl. when the if condition spans multiple lines (#6):
// Correct
if (address.isEmpty() || !isValid()
|| !codec) {
return false;
}
I've been bothered by this for years, since I think this is totally unreadable. In particular, if the last line of the if is on the longer side, the body of the then branch is almost impossible to distinguish from a continuation of the condition.
Braces at the right are already harder to find. Before I joined Qt, I used to always put braces on the left, in all languages. It used to be normal at all the places where I worked. Then I tried writing Scheme that way and got lambasted: you just have to get used to great piles of parentheses (although some people use square brackets to disambiguate some cases: they are interchangeable). Then I joined Qt and had to switch style anyway, because the company likes the opening braces on the right for some reason. I suppose the advantage is less vertical space is wasted this way (same reason as for Lisp dialects: all those indented blocks and wasting a whole line for one parenthesis were unreasonable after all. I got used to brace-matching; but I still like using real tabs whenever I can get away with it, and that’s also unpopular in most circles for some reason.)
You probably have a brace-matcher in your editor. Hopefully it makes them stand out enough to find the other end when you need to. For some languages it’s more mandatory than others. C++ lambdas and QML nested-ternaries are getting there too.
Another workaround you could use here is to indent the second line of the if. I don’t like having it lined up with the body in such a case, and you can indent it more without violating the coding style rules.
if (address.isEmpty() || !isValid() ||
!codec) {
return false;
}
Or
if ( address.isEmpty() || !isValid() ||
!codec ) {
return false;
}
Let’s not split the cases for brace alignment. It will tend to result in even more review nitpicking, and make it harder to write reformatting rules for clang-format and such.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20260716/0f4c10ff/attachment.htm>
More information about the Development
mailing list