[Development] Braces (was Resolving coding style contentions)
Jason H
jhihn at gmx.com
Fri Dec 21 16:12:01 CET 2018
This is probably hijacking your post, but I've always found it bad style to have different conventions for C++ and QML.
//C++ convention
int Class::memberF()
{
}
//QM convention:, compressed is used:
Rectangle {
onVisibleChanged: {
....
}
}
I'd like to get everything down to one style (preferable QML's)
As to your question, using a lot of modern C++ initializers, I've found myself using braces with spaces when using lists, and just preferring more whitespace in general. When using (), I don't post space, so new Item("name", parent); stays. However your example of new Item { "name", parent }; really bothers me. If you're calling a function, keep that with () and only use { } for the other things. I do not know how far back the compilers would allow new Item { "name", parent }; but it just doesn't look right to me. I understand there may be a push to make it modern, but not everyone should need to be at the level of proficiency of modern to feel comfortable in Qt. So I encourage the principal of oldest possible expressible syntax. If Qt started using new Item { "name", parent };, I would freak. Thiago has criticised some of my suggestions for source compatibility, and he's right to do so. But I'm arguing for backwards mental source compatibility. When reading new code I often wonder "Is this a new concept or and old one new to me?" And if it's a new concept, what's the minimum C++0x version that I need?
The only thing beyond better initializer lists that I really find that I like about modern C++ is that you can use structured bindings to decompose a pair into better-named variables than 'pair.first' and 'pair.second'; Unfortunately, structured bindings are not supported by the Android NDK yet* (*the last time I checked).
> Sent: Friday, December 21, 2018 at 1:59 AM
> From: "Alberto Mardegan" <mardy at users.sourceforge.net>
> To: development at qt-project.org
> Subject: [Development] Braces (was Re: Resolving coding style contentions)
>
> Hi all!
> Speaking of coding style again, I haven't found any indication in the
> coding guidelines about brace vs parentheses in initializations.
>
> There are a few cases where they can be used (and I might even be
> forgetting some):
>
> 1) Constructors:
> MyClass(): var(0) {}
> vs
> MyClass(): var { 0 } {}
>
> 2) Member initializations:
> class MyClass
> {
> int m_count = 3;
> vs
> int m_count { 3 };
>
> 3) Variable initialization
> bool ok = false;
> vs
> bool ok { false };
>
> 4) Constructor invocations:
> auto *item = new Item("name", parent);
> vs
> auto *item = new Item { "name", parent };
>
> or
>
> QString message(QStringLiteral("text"));
> vs
> QString message { QStringLiteral("text") };
> I guess this is not an option:
> QString message { QStringLiteral { "text" } };
>
>
> I'm not mentioning the cases of struct and list initializers, where of
> course braces are the only option. But what is the consensus on the
> cases above?
> Looking at the Qt code, it seems that variant without braces is always
> preferred, but I cannot find it formalized anywhere.
>
> Ciao,
> Alberto
>
> --
> http://blog.mardy.it - Geek in un lingua international
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> https://lists.qt-project.org/listinfo/development
>
More information about the Development
mailing list