[Development] gsl::owner (Was: Setters: Clarifying the ownership)

Sérgio Martins sergio.martins at kdab.com
Tue Jul 31 13:11:05 CEST 2018


On 2018-01-19 18:32, Thiago Macieira wrote:
> On Friday, 19 January 2018 09:26:10 PST Edward Welbourne wrote:
>> Jaroslaw Kobus (19 January 2018 17:09)
>> 
>> > "give" may be confused with "get", which is usually an accessor. I may
>> > also think "Am I giving (to QCoreApplication)" or "The
>> > QCoreApplication is giving (me)". Maybe it is just a matter of the
>> > other verb? Absorb, hand over, hand on, suck in, swallow...
>> 
>> However, we have plenty of take functions, where the caller takes
>> ownership from the object on which the method is called; so it makes
>> sense that a give function would be the caller giving ownership to the
>> object on wich the method is called.
>> 
>> Thus we'd keep child.setParent(newParent), since the child doesn't 
>> take
>> ownership of the parent; but QMainWindow's setCentralWidget() would
>> become giveCentralWidget(), matching its takeCentralWidget().  This
>> would save the search for its doc, to find that it does indeed take
>> ownership.
>> 
>> The signature is, in any case, always sufficient to make clear that a
>> give()r isn't a get()ter.
> 
> Let's stop the discussion about method *naming* right here. We're not 
> going to
> change hundreds of getters and setters now or even in Qt 6.
> 
> Let's instead find a solution that either uses macros or uses simple 
> binary-
> compatible pointer wrappers like GST.
> 
> And be careful with template functions. Changing from T to Something<T> 
> may
> change what gets deduced.


Nuno experienced a crash [1] which could have been easily caught by a 
compiler plugin or clang-tidy if we used gsl::owner or similar.

So to try to move things forward I asked Marc to restore his gsl::owner 
change [2].

I would recommend however that our docs show T* instead of gsl::owner<T> 
and continue to include "Takes ownership of foo" in the text.
While I believe in self-documenting signatures I think it's too much 
noise and hurts readability, and most devs never heard of gsl.

Should be just an aid for tooling IMO.



[1] http://lists.qt-project.org/pipermail/interest/2018-July/030530.html
[2] https://codereview.qt-project.org/#/c/178107/

Regards,
-- 
Sérgio Martins | sergio.martins at kdab.com | Senior Software Engineer
Klarälvdalens Datakonsult AB, a KDAB Group company
Tel: Sweden (HQ) +46-563-540090, USA +1-866-777-KDAB(5322)
KDAB - The Qt, C++ and OpenGL Experts



More information about the Development mailing list