[Differential] [Requested Changes To] D4012: Introduce Units singleton
markg (Mark Gaiser)
noreply at phabricator.kde.org
Sun Jan 8 14:36:18 UTC 2017
markg requested changes to this revision.
markg added a reviewer: markg.
markg added inline comments.
This revision now requires changes to proceed.
INLINE COMMENTS
> units.cpp:61
> SharedAppFilter *Units::s_sharedAppFilter = nullptr;
> +Units *Units::s_self = nullptr;
>
Remove this line if you go for the comment i made below.
> units.cpp:98-104
> +Units *Units::self()
> +{
> + if (!s_self) {
> + s_self = new Units();
> + }
> + return s_self;
> }
I think you need to do more, or rather less.
In C++11 making a singleton is really easy! All you need is:
Units &Units::self()
{
static Units units;
return units;
}
And done. It gives you a thread safe singleton (which your current version isn't).
I also think the current compiler requirements for plasma and frameworks allow you to use the code I've just given.. So.. Use it :)
Note: i changed the return value to a reference.
Also, why use "self" as getter for a singleton? I think "instance" or "getInstance" is the most used name for this, but i might be wrong here.
> units.h:122
>
> + static Units *self();
> +
Add documentation please.
> units.h:185-186
> private:
> + Units(QObject *parent = 0);
> + Q_DISABLE_COPY(Units)
> +
If this were pre C++11, you'd be done :)
But we have move semantics now. You need to disable moving as well!
Units(Units const&) = delete; // Copy construct
Units(Units&&) = delete; // Move construct
Units& operator=(Units const&) = delete; // Copy assign
Units& operator=(Units &&) = delete; // Move assign
I'd drop the Q_DISABLE_COPY and go for the above "= delete" lines, but that's up for you to decide. You have to add them for move semantics anyway (Q_DISABLE_COPY does not do that for you).
> units.h:200
> static SharedAppFilter *s_sharedAppFilter;
> + static Units *s_self;
>
Remove this line if you go for the comment i made below.
REPOSITORY
R242 Plasma Frameworks
REVISION DETAIL
https://phabricator.kde.org/D4012
EMAIL PREFERENCES
https://phabricator.kde.org/settings/panel/emailpreferences/
To: broulik, #plasma, davidedmundson, markg
Cc: markg, plasma-devel, #frameworks, lesliezhai, ali-mohamed, jensreuterberg, abetts, andreaska, sebas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20170108/44f5f64c/attachment-0001.html>
More information about the Plasma-devel
mailing list