Björnke von Gierke wrote:

> On 16.02.2014, at 22:13, Peter Haworth wrote:
>
>>  Seems like it's really meant to detect the
>> infamous "this should never happen" situation rather than expected
>> errors.,
>
> Alright, if that is the case, why isn't it done in the engine WITHOUT
> adding another command? why do WE need to add random commands to our
> code? Wouldn't some message or global property that changes the
> behaviour of bug-detection that the engine already has to do anyway
> be better? In fact, it is my impression THAT ALREADY EXISTS!

Before assert was added we had two general ways to check for runtime errors: "the result" is sometimes used for reporting errors, and the errorDialog message is sometimes sent for others (though the "sometimes" aspect makes me uneasy, but that's another topic).

The key point there is that both only catch things the engine considers errors.

Assert compliments those by providing for things which may be syntactically correct and completely executable, yet are errors within the context of the business logic of your app.

That they can also be used for logging execution errors is merely a nice extra, providing one-stop shopping for all types of logging and execution monitoring needs.

Sure, we could write our own handler for some of that functionality, but managing param evaluation would be a bit more finicky and it would have to parse the executionContexts to provide similar info - having this built-in is very convenient.

Many languages support assert, so while it may not be absolutely essential it's a good nice-to-have that raises the level of professionalism in LC.

If you're happy working without asserts they're easy to avoid by just never writing them. :) But I suspect that, like nested behaviors which were questioned here earlier, while the value of the functionality may not be self-evident at first, further exploration will yield new scripting habits that make strong use of them.

In fact, my first reaction was pretty much the same as yours, but I know Mark Waddingham isn't normally one to waste his time on fluff. So I spent a little time reading up on how asserts are used in other languages, and that turned me around.



All that said, there appears to be one omission from the current implementation:

To use assert well we'd want to use it liberally throughout our code, but of course that means adding additional overhead to execution.

Most languages that support assert also provide a global means of turning it off. Some C++ compilers won't even compile assert statements when the flag is off.

For example, you may want asserts to be evaluated during testing, but not in the final product.

To bring this new feature to completion I just added a request for a global property to turn it off:

AllowAssert global property
<http://quality.runrev.com/show_bug.cgi?id=11833>

--
 Richard Gaskin
 Fourth World
 LiveCode training and consulting: http://www.fourthworld.com
 Webzine for LiveCode developers: http://www.LiveCodeJournal.com
 Follow me on Twitter:  http://twitter.com/FourthWorldSys


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to