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

Matthew Woehlke mwoehlke.floss at gmail.com
Fri Feb 28 16:28:34 CET 2020


On 27/02/2020 17.03, Allan Sandfeld Jensen wrote:
> On Thursday, 27 February 2020 21:51:18 CET Matthew Woehlke wrote:
>> On 26/02/2020 07.42, Tor Arne Vestbø wrote:
>>> As others have argued, a signal is not special, in the sense that any
>>> function can do anything, including emitting signals, so annotating it
>>> doesn’t seem critical, as we apparently are fine without in all other
>>> cases.
>> Taking a step back... I think some of the reason for the current
>> situation has to do with API design. Which of these is easier to understand?
>>
>>   if (map.empty())
>>     emptied();
>>
>> - vs. -
>>
>>   if (map.isEmpty())
>>     emit emptied();
>>
>> One reads like plain English. The other is missing words in a way that
>> can confuse readers.
> 
> That is how I see it too. It essentially violates Qt code guidelines. If it 
> was a normal method we would name it "emitEmptied()", so far we have just 
> lived with "emit emptied()" instead.

I still have to disagree. *The signal* is "emptied". It is *not*
"emitEmptied".

If we had to do it over again, it might make sense to follow Python and
make signals *objects* instead of *methods*. Then the code would look like:

  this->emptied.emit(...);

But I *equally do not* want to write:

  connect(foo, &Foo::emitEmptied, ...);

-- 
Matthew


More information about the Development mailing list