On 07/20/2013 07:19 PM, Tom Breton (Tehom) wrote:
> It's a case that (now) shouldn't be logically possible. IMHO it's better
> for a failure of this logic to be an immediately obvious failure, but I
> will of course conform to team standards.
I'm not sure what those "standards" are, so don't conform yet. We
might need to set the standards now.
Assertions only fire with a debug build, so preventing people from
losing work is probably not that big of a deal. If they are running a
debug build, they should know better (save frequently).
I think the bigger picture issue is that oftentimes code assumes that
once the assertion fires, the program ends. I think we need to at least
take into account the fact that for a non-debug build, the assertion
will not happen, and therefore we should be careful not to crash on the
user. And I think that's the real spirit of what I commonly see
throughout rg:
if (p)
p->foo();
With this, we do no harm in a debug or a non-debug build if p happens
to be 0. Achieving the same with an assert is as simple as adding the
assert:
Q_ASSERT_X(p, "bar()", "p shouldn't be 0");
if (p)
p->foo();
Of course, each case will be different. But the idea is to handle
things cleanly without the assertion. Then add the assertion if you
really want to crash on users of a debug build.
We should use something like this as a starting point for a
rosegarden assertion guideline.
I think handling problems cleanly in debug and non-debug builds is
easy to agree on. Whether assertions should be allowed might be a bit
harder to agree on.
On the upside, assertions do grab our attention so that we address
the issue.
On the downside, assertions are crashes that cause data loss, but
only in a debug build. Is anyone seriously morally opposed to this?
Ted.
------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
Rosegarden-devel mailing list
[email protected] - use the link below to unsubscribe
https://lists.sourceforge.net/lists/listinfo/rosegarden-devel