Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #22261

Re: compare several boolean matrix’s

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar | Unroll thread


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 matrix’s 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 matrix’s 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