Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #22261
| Newsgroups | comp.lang.java.programmer |
|---|---|
| Date | 2013-02-09 23:36 -0800 |
| References | (7 earlier) <P7ydnXXp988ty4jMnZ2dnUVZ7radnZ2d@bt.com> <5115d0e4$0$283$14726298@news.sunsite.dk> <5115d160$0$283$14726298@news.sunsite.dk> <21496893-281c-4f0a-803a-0466acce96f4@googlegroups.com> <5116e8ec$0$288$14726298@news.sunsite.dk> |
| Message-ID | <edfb5dd7-3ac6-4591-84e8-91d994322442@googlegroups.com> (permalink) |
| Subject | Re: compare several boolean matrix’s |
| From | Lew <lewbloch@gmail.com> |
Arne Vajhøj wrote:
> Lew wrote:
>> Arne Vajhøj wrote:
>>> I would have done a few things differently, but ...
>>>
>>> public class MatrixSummarize {
>>> public static boolean[][] summarize(boolean[][][] matrices) {
>>> assert matrices.length % 2 == 1 : "Number of matrices must be odd";
>>
>> Nitpicks: Some details that separate pedagogy from production.
>>
>> Arne's code is very good, and proper for instruction. However, if it were
>> to serve in production there is more to do.
>>
>> This is an improper use of 'assert' because there is no code to
>> enforce the invariant. Properly, there should be argument-checking prior to
>> the assertion so that it represents an actual invariant.
>>
>> There's no check for a null argument. One could assert non-nullity after
>> the check.
>>
>> By dropping the 'assert' in here like this, Arne has presented a secret
>> challenge to fill in the gaps, as anyone schooled in the use of 'assert'
>> might have noticed.
>
> I am not that advanced.
>
> Passing null, passing arrays with wrong dimensions etc. will all
> give various exceptions.
>
> The odd number requirement will not give an exception if violated.
>
> So I flipped a coin (virtually) between an if throw new
> RuntimeException and the assert. Assert won.
It's not a coin flip. They aren't equivalent. This is well known in Java,
as 'assert' has been around since Java 1.4.
Assertions are more runtime comments than code. They do you no good when
disabled. Exceptions cannot be suppressed.
Assertions are not even slightly meant for argument checking of public
methods.
That's the job of exceptions.
Assertions come in after the exception, or in private methods, to document
and enforce invariants for programmers. For example, a getter method that
expects the private member to be non-null can assert non-nullity. Only
something under complete control of the implementation, i.e., the private
member, is involved, so it's time for 'assert'.
When it's a public method you don't have that control. So you start with
a runtime check. Once that check is complete, i.e., either the method has returned, thrown an exception, or continued to where supposedly you've just
guaranteed non-nullity, if you are still in the method it is safe to
assert non-nullity.
public void checkArgumentsThenAssert(Foo foo, Bar bar)
{
/* It doesn't make sense to assert non-nullity here because you
* simply do not have that guarantee.
*/
if (foo == null || bar == null)
{
throw new IllegalArgumentException("Null argument");
}
/* NOW you have the guarantee. It would take a code mistake to mess up. */
assert foo != null && bar != null : "There was a code mistake";
}
A quick Google will reveal the expert wisdom on the subject.
http://lmgtfy.com/?q=java+assert
http://docs.oracle.com/javase/1.4.2/docs/guide/lang/assert.html
"There are also a few situations where you should not use them:
"Do not use assertions for argument checking in public methods."
...
"Do not use assertions to do any work that your application requires for
correct operation."
--
Lew
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
compare several boolean matrix’s keijaf2011@gmail.com - 2013-02-05 11:19 -0800
Re: compare several boolean matrix’s Eric Sosman <esosman@comcast-dot-net.invalid> - 2013-02-05 15:47 -0500
Re: compare several boolean matrixs Roedy Green <see_website@mindprod.com.invalid> - 2013-02-05 16:26 -0800
Re: compare several boolean matrix’s Arne Vajhøj <arne@vajhoej.dk> - 2013-02-05 19:43 -0500
Re: compare several boolean matrix’s Arved Sandstrom <asandstrom2@eastlink.ca> - 2013-02-05 21:09 -0400
Re: compare several boolean matrix’s Arne Vajhøj <arne@vajhoej.dk> - 2013-02-05 19:40 -0500
Re: compare several boolean matrix’s Keivan Jafari <keijaf2011@gmail.com> - 2013-02-05 23:21 -0800
Re: compare several boolean matrix’s Keivan Jafari <keijaf2011@gmail.com> - 2013-02-06 03:23 -0800
Re: compare several boolean matrix’s Arved Sandstrom <asandstrom2@eastlink.ca> - 2013-02-06 07:55 -0400
Re: compare several boolean matrix’s Keivan Jafari <keijaf2011@gmail.com> - 2013-02-06 04:11 -0800
Re: compare several boolean matrix’s Arved Sandstrom <asandstrom2@eastlink.ca> - 2013-02-06 08:24 -0400
Re: compare several boolean matrix’s Keivan Jafari <keijaf2011@gmail.com> - 2013-02-06 06:00 -0800
Re: compare several boolean matrix’s lipska the kat <"nospam at neversurrender dot co dot uk"> - 2013-02-06 14:00 +0000
Re: compare several boolean matrix’s Arne Vajhøj <arne@vajhoej.dk> - 2013-02-08 16:18 -0500
Re: compare several boolean matrix’s Keivan Jafari <keijaf2011@gmail.com> - 2013-02-06 06:35 -0800
Re: compare several boolean matrix’s Patricia Shanahan <pats@acm.org> - 2013-02-06 07:49 -0800
Re: compare several boolean matrix’s lipska the kat <"nospam at neversurrender dot co dot uk"> - 2013-02-06 16:13 +0000
Re: compare several boolean matrix’s Keivan Jafari <keijaf2011@gmail.com> - 2013-02-06 08:01 -0800
Re: compare several boolean matrix’s Keivan Jafari <keijaf2011@gmail.com> - 2013-02-06 08:20 -0800
Re: compare several boolean matrix’s lipska the kat <"nospam at neversurrender dot co dot uk"> - 2013-02-06 16:33 +0000
Re: compare several boolean matrix’s Keivan Jafari <keijaf2011@gmail.com> - 2013-02-06 08:42 -0800
Re: compare several boolean matrix’s Lars Enderin <lars.enderin@telia.com> - 2013-02-06 18:09 +0100
Re: compare several boolean matrix’s Keivan Jafari <keijaf2011@gmail.com> - 2013-02-06 09:14 -0800
Re: compare several boolean matrix’s Lars Enderin <lars.enderin@telia.com> - 2013-02-06 18:29 +0100
Re: compare several boolean matrix’s Keivan Jafari <keijaf2011@gmail.com> - 2013-02-06 09:40 -0800
Re: compare several boolean matrix’s lipska the kat <"nospam at neversurrender dot co dot uk"> - 2013-02-06 17:19 +0000
Re: compare several boolean matrix’s Keivan Jafari <keijaf2011@gmail.com> - 2013-02-06 09:29 -0800
Re: compare several boolean matrix’s lipska the kat <"nospam at neversurrender dot co dot uk"> - 2013-02-06 18:18 +0000
Re: compare several boolean matrix’s Lars Enderin <lars.enderin@telia.com> - 2013-02-06 19:57 +0100
Re: compare several boolean matrix’s lipska the kat <"nospam at neversurrender dot co dot uk"> - 2013-02-06 19:02 +0000
Re: compare several boolean matrixs T®oll <spooksRus@derbyshire-crania.org> - 2013-02-06 21:01 +0000
Re: compare several boolean matrix’s Keivan Jafari <keijaf2011@gmail.com> - 2013-02-08 11:21 -0800
Re: compare several boolean matrix’s Keivan Jafari <keijaf2011@gmail.com> - 2013-02-08 11:31 -0800
Re: compare several boolean matrix’s lipska the kat <"nospam at neversurrender dot co dot uk"> - 2013-02-08 19:49 +0000
Re: compare several boolean matrix’s Keivan Jafari <keijaf2011@gmail.com> - 2013-02-08 12:24 -0800
Re: compare several boolean matrix’s Arne Vajhøj <arne@vajhoej.dk> - 2013-02-08 23:30 -0500
Re: compare several boolean matrix’s Arne Vajhøj <arne@vajhoej.dk> - 2013-02-08 23:32 -0500
Re: compare several boolean matrix’s lipska the kat <"nospam at neversurrender dot co dot uk"> - 2013-02-09 08:39 +0000
Re: compare several boolean matrix’s Lew <lewbloch@gmail.com> - 2013-02-09 11:18 -0800
Re: compare several boolean matrix’s Arne Vajhøj <arne@vajhoej.dk> - 2013-02-09 19:25 -0500
Re: compare several boolean matrix’s Lew <lewbloch@gmail.com> - 2013-02-09 23:36 -0800
Re: compare several boolean matrix’s Arne Vajhøj <arne@vajhoej.dk> - 2013-02-10 13:54 -0500
Re: compare several boolean matrix’s Arne Vajhøj <arne@vajhoej.dk> - 2013-02-08 16:30 -0500
Re: compare several boolean matrix’s Patricia Shanahan <pats@acm.org> - 2013-02-06 11:24 -0800
csiph-web