Port KAnimatedSystemTray into KSystemTray
Friedrich W. H. Kossebau
kossebau at kde.org
Sat Sep 13 21:01:42 BST 2008
Hi,
(oh dear, my second KDE related email this week, and again it is about code
style. I must be obsessed this week. Perhaps I have seen too much of
improvable code.)
Am Samstag, 13. September 2008, um 18:15 Uhr, schrieb Aaron J. Seigo:
> rationale: we have a style guide for a reason =) mostly just be sure to use
> braces around even single liners, e.g.:
Aha! So this is the reason, the brace-and-hug-all-and-me party just wanna rule
the world.
Please, don't hide the fact that that guide is _not_ an official guide.
Inofficial especially for such controversable things like bracing single
lines (me being a member of the
no-braces-for-single-lines-and-braces-on-own-line party).
>
> + if (d->movie->state() == QMovie::Running)
> + return true;
> + else
> + return false;
>
>
> should be:
>
> + if (d->movie->state() == QMovie::Running) {
> + return true;
> + } else {
> + return false;
> + }
(Hm. Really, how is this better? But this is OT these days).
Isn't the problem here rather the if-return-else-return, which makes the code
improvable?
May I make some propaganda for another style? Thanks:
Calculate the condition and store it in a const variable with a descriptive
name. Then use this variable for the return value.
Should be much more readable and selfdocumenting, IMHO:
bool KSystemTrayIcon::isPlaying() const
{
if (!d->movie)
return false;
const bool movieIsRunning = ( d->movie->state() == QMovie::Running );
return movieIsRunning;
}
Here it would be even possible to include the invalid state check at the start
of the method, e.g. by this:
bool KSystemTrayIcon::isPlaying() const
{
const bool hasMovieAndIsRunning =
( d->movie != 0
&& (d->movie->state() == QMovie::Running) );
return hasMovieAndIsRunning;
}
The deeper logic behind this is that you separate concerns and make them
reducable.
In your code you mix the concern of returning a value and the concern of
calculating the state. By separating them and reducing it to a simple
interface things are easier to capable by humans.
Concern of state: just calculating, then reduced to the const variable, needs
no more thinking how value of variable is reached, it's just there, free your
mind for the next thing:
Concern of returning a value: return the state variable.
Simple. No brainer. Easier to modify.
Much more important for good code than where to put braces, no?
Cheers
Friedrich
--
Okteta - KDE Hex Editor, coming to you with KDE 4.1
More information about the kde-core-devel
mailing list