Groups | Search | Server Info | Keyboard shortcuts | Login | Register


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

Re: About using assertion

From Lew <noone@lewscanon.com>
Newsgroups comp.lang.java.programmer
Subject Re: About using assertion
Date 2011-05-19 09:38 -0400
Organization albasani.net
Message-ID <ir36g5$j1h$1@news.albasani.net> (permalink)
References (3 earlier) <92r0e9F6lvU1@mid.individual.net> <sjmea8-067.ln1@tmcd-linux-p4.austin.tx.us> <ir2dmk$4vm$1@news.onet.pl> <ir33ei$c4p$2@news.albasani.net> <ir3587$dc9$1@news.onet.pl>

Show all headers | View raw


On 05/19/2011 09:16 AM, Michal Kleczek wrote:
> Lew wrote:
>
>>
>> That is wrong.  That needs to be checked with an 'if' if 'NaN' is not a
>> legitimate input.  'assert' is not meant to correct things, only to make
>> sure
>
> I totally agree with you.
>
>> that the correction is documented and proven.  If 'assert' is turned off
>> in production, you still have the bug if you use 'assert' as the only
>> guard.
>
> I was imprecise - just wanted to praise an example of "having confidence"
> being sooo wrong and how having assertions (even though they look redundant)
> _may_ help you.

Totally correct.

Assertions are a signpost: HERE THERE BE AN INVARIANT!

When subtypes or refactored code violate the invariant, the assertion can help 
catch it.

  public class Foo
  {
    private Attribute attribute;

    public void setAttribute( Attribute attr )
    {
      if ( attr == null )
      {
        throw new IllegalArgumentException( "null argument, dummy" );
      }
      attribute = attr;
      assert attribute != null;
    }

    public Attribute getAttribute()
    {
      assert attribute != null;
      return attribute;
    }
  }

  public class Bar extends Foo()
  {
    public void setAttribute( Attribute attr )
    {
      attribute = attr;
    }
  }

The assertion will help reveal that class 'Bar' violated the invariant.  In 
production, the 'NullPointerException' (in the logs from 'getAttribute()' 
clients) will trigger an investigation, which will include enabling assertions 
for the class that yields the value, and then the invariant checks will help 
find the problem.

-- 
Lew
Honi soit qui mal y pense.
http://upload.wikimedia.org/wikipedia/commons/c/cf/Friz.jpg

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

About using assertion byhesed <byhesed@gmail.com> - 2011-05-09 07:36 -0700
  Re: About using assertion Robert Klemme <shortcutter@googlemail.com> - 2011-05-09 08:24 -0700
    Re: About using assertion Roedy Green <see_website@mindprod.com.invalid> - 2011-05-09 09:01 -0700
      Re: About using assertion Lew <noone@lewscanon.com> - 2011-05-09 12:11 -0400
        Re: About using assertion Robert Klemme <shortcutter@googlemail.com> - 2011-05-09 22:17 +0200
          Re: About using assertion Lew <noone@lewscanon.com> - 2011-05-09 18:49 -0400
            Re: About using assertion Robert Klemme <shortcutter@googlemail.com> - 2011-05-10 07:23 +0200
            Re: About using assertion Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-05-10 06:45 -0300
              Re: About using assertion Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-05-10 13:29 +0000
                Re: About using assertion Lew <noone@lewscanon.com> - 2011-05-10 11:21 -0400
                Re: About using assertion Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-05-10 16:01 +0000
                Re: About using assertion RedGrittyBrick <RedGrittyBrick@spamweary.invalid> - 2011-05-10 17:26 +0100
                Re: About using assertion Lew <noone@lewscanon.com> - 2011-05-10 13:25 -0400
                Re: About using assertion Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2011-05-10 21:15 +0200
          Re: About using assertion tmcd@tmcd-p4-linux.austin.tx.us (Tim McDaniel) - 2011-05-19 00:32 -0500
            Re: About using assertion Michal Kleczek <kleku75@gmail.com> - 2011-05-19 08:34 +0200
              Re: About using assertion Lew <noone@lewscanon.com> - 2011-05-19 08:46 -0400
                Re: About using assertion Michal Kleczek <kleku75@gmail.com> - 2011-05-19 15:16 +0200
                Re: About using assertion Lew <noone@lewscanon.com> - 2011-05-19 09:38 -0400
                Re: About using assertion Robert Klemme <shortcutter@googlemail.com> - 2011-05-19 07:41 -0700
                Re: About using assertion Lew <noone@lewscanon.com> - 2011-05-19 11:00 -0400
            Re: About using assertion Patricia Shanahan <pats@acm.org> - 2011-05-19 05:52 -0700
              Re: About using assertion tmcd@tmcd-p4-linux.austin.tx.us (Tim McDaniel) - 2011-05-21 18:37 -0500
                Re: About using assertion Patricia Shanahan <pats@acm.org> - 2011-05-21 19:00 -0700
                Re: About using assertion Lew <noone@lewscanon.com> - 2011-05-22 01:19 -0400
  Re: About using assertion Lew <noone@lewscanon.com> - 2011-05-09 11:35 -0400
  Re: About using assertion markspace <-@.> - 2011-05-09 11:40 -0700
    Re: About using assertion Lew <noone@lewscanon.com> - 2011-05-09 14:53 -0400

csiph-web