[Development] A modest proposal: disable lower-case keywords (emit, foreach, forever, signals, slots) by default

Lars Knoll lars.knoll at qt.io
Mon Feb 24 13:39:58 CET 2020


On 24 Feb 2020, at 13:22, Mitch Curtis <mitch.curtis at qt.io<mailto:mitch.curtis at qt.io>> wrote:

-----Original Message-----
From: Development <development-bounces at qt-project.org<mailto:development-bounces at qt-project.org>> On Behalf Of
Lars Knoll
Sent: Monday, 24 February 2020 12:25 PM
To: Thiago Macieira <thiago.macieira at intel.com<mailto:thiago.macieira at intel.com>>
Cc: Qt development mailing list <development at qt-project.org<mailto:development at qt-project.org>>
Subject: Re: [Development] A modest proposal: disable lower-case
keywords (emit, foreach, forever, signals, slots) by default

On 21 Feb 2020, at 17:39, Thiago Macieira <thiago.macieira at intel.com<mailto:thiago.macieira at intel.com>>
wrote:

On Friday, 21 February 2020 04:59:02 PST Ville Voutilainen wrote:
Having a keyword-extension to normal C++ is ugly as sin, to some of
us. It causes fair amounts of "wtf is that?".

That was my reaction when I first saw it, in 1999.

Over 20 years later, I don't bat an eye.

After 20 years, my eyes simply ignore any ‘emit’ in the source code.

In any case, I do understand why Qt added emit as a keyword 25 years ago.
But today, we do have IDEs which should be able to figure out on the fly
whether a function call is a signal emission (as they already do for virtual vs
non virtual methods). So why don’t we move the over to be a tooling
problem? Simply highlight signal emissions differently in the IDE and you
don’t need a keyword for it anymore.

That's one way of handling it, but I don't see the harm in keeping it for those who want to use it. I don't think anyone has explained what that harm is yet.

It’s redundant. I would prefer to remove things that are redundant and where the information could be provided by other means.

It’s also safer, as the keyword can be forgotten or applied to the wrong places.

I don't think I've ever seen this happen, and am curious as to why it's dangerous. It might be misleading, but it couldn't cause harm, just a moment of mild confusion. In terms of harm, I see it as on par with (or probably even less dangerous than) an out-dated code comment. I think that marking signal emissions aids the reader (and there is certainly *a lot* of Qt code that could e.g. use more code comments to aid people who have to maintain it).

Of course it won’t change the logic. I could sprinkle my source code with tons of “emit” all over the place and it wouldn’t change it’s meaning ;-)

emit if emit (emit myVar == emit true)
mySignal() emit emit emit;

But we could convey the information that this is a signal you’re calling *reliably* through other means. This implies that the keyword is not required.

Cheers,
Lars


Cheers,
Lars

_______________________________________________
Development mailing list
Development at qt-project.org<mailto:Development at qt-project.org>
https://lists.qt-project.org/listinfo/development

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20200224/a974f2f7/attachment-0001.html>


More information about the Development mailing list