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

Eric Lemanisser eric.lemanissier at gmail.com
Tue Jul 31 13:53:35 CEST 2018


+1

Le mar. 31 juil. 2018 à 13:11, Sérgio Martins via Development <
development at qt-project.org> a écrit :

> 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 <+46%20563%2054%2000%2090>, USA
> +1-866-777-KDAB(5322)
> KDAB - The Qt, C++ and OpenGL Experts
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20180731/4f0c5e81/attachment.html>


More information about the Development mailing list