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


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

Re: About using assertion

From Lew <noone@lewscanon.com>
Newsgroups comp.lang.java.programmer
Subject Re: About using assertion
Date 2011-05-09 18:49 -0400
Organization albasani.net
Message-ID <iq9r2h$tlh$1@news.albasani.net> (permalink)
References <f1e4cc83-8596-4e53-bed7-34a5209fe8c4@k3g2000prl.googlegroups.com> <09cb7d90-9b79-473e-9869-4476c5a0191a@w24g2000yqb.googlegroups.com> <hp3gs6dun3691h96q13jsb6sb4pu0rrvrp@4ax.com> <iq93mt$7ob$1@news.albasani.net> <92r0e9F6lvU1@mid.individual.net>

Show all headers | View raw


Robert Klemme wrote:
> Lew, I am not sure what you tried to convey with this posting. I for my part
> would say that the assert is a tad too much here since the if clause before
> that gives me enough "confidence" that arg is actually >= 0 at that line. If

First, the example is deliberately simple to highlight the structural location 
for 'assert' statements.  Formally, they go where invariants are.

The exception gives that confidence, yes, but only just now at code-inspection 
time.  At this level, the assertion provides not much more than 
compiler-enforced documentation of the invariant.  However, refactoring, 
inheritance and other future actions could violate the invariant.  This would 
manifest in production, where source code is not immediately convenient.

Ops guys can use assertions to locate which invariants were violated, helping 
diagnose and triage the problem.

> it isn't then I have bigger problems than calculating square roots of negative
> numbers. :-)

True but only at one moment in time.  Assertions live ongoingly and can be 
re-enabled at trouble time.

> It's probably a different story if the calculation is done by a private method
> in which case I'd probably add the assert to the beginning of that method just
> to be sure the caller (which can only be in the same class or nested classes)
> did not make a mistake.

There is art in the decision of which invariants to document.  I like to 
document all of them.  Why not?  Others only document a few.  Why?  I've been 
on the ops end of production code quite a few times, so I find assertions 
valuable.  I studied math way back when, and I appreciate their formal value. 
  Pragmatically there is no reason to avoid them, and good reasons to use them 
liberally, if strategically.

There is no real art to deciding where assertions go if you do use them.  They 
go at the algorithmic invariant points.  I assert that you should use them 
wherever they support operations, and in the largest proportion of invariant 
points consistent with that goal.  That is a matter of your strategy and style.

-- 
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 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