Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #3898
| From | Robert Klemme <shortcutter@googlemail.com> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: About using assertion |
| Date | 2011-05-10 07:23 +0200 |
| Message-ID | <92s0f4F16fU1@mid.individual.net> (permalink) |
| References | (1 earlier) <09cb7d90-9b79-473e-9869-4476c5a0191a@w24g2000yqb.googlegroups.com> <hp3gs6dun3691h96q13jsb6sb4pu0rrvrp@4ax.com> <iq93mt$7ob$1@news.albasani.net> <92r0e9F6lvU1@mid.individual.net> <iq9r2h$tlh$1@news.albasani.net> |
On 10.05.2011 00:49, Lew wrote: > 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. OK, I see what you mean. Only trouble with refactoring (as with any code changes) is that you need to watch out which parts you extract as method. The assert could end in less useful than optimal place. :-) > 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. Absolutely! As you said: The fact that you can enable and disable them at will *after* compile time is a big plus of Java. > 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. Thanks for clarifying, Lew! Cheers robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar
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 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