Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #3916
| From | Lew <noone@lewscanon.com> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: About using assertion |
| Date | 2011-05-10 11:21 -0400 |
| Organization | albasani.net |
| Message-ID | <iqbl6g$1q3$1@news.albasani.net> (permalink) |
| References | (3 earlier) <iq93mt$7ob$1@news.albasani.net> <92r0e9F6lvU1@mid.individual.net> <iq9r2h$tlh$1@news.albasani.net> <lP7yp.31027$vC5.15267@newsfe01.iad> <slrnisifel.phi.avl@gamma.logic.tuwien.ac.at> |
On 05/10/2011 09:29 AM, Andreas Leitgeb wrote:
> Arved Sandstrom<asandstrom3minus1@eastlink.ca> wrote:
>> On 11-05-09 07:49 PM, Lew wrote:
>>> There is art in the decision of which invariants to document. I like to
>>> document all of them. Why not?
>
> "All" does sound a bit harsh, doesn't it? Would you really do even:
> if ( xyz != null ) {
> assert xyz != null : "Something's wrong with the world...";
> ...
> }
> ? ;-)
>
>> On a related note, when I run into
>> objections about use of assertions, let alone copious use of them, the
>> most frequent objection is that they'll "break" the program.
>
> Bad assertions *can* break the program in nasty ways:
> assert methodWithRelevantSideEffect()> 0 : "Aww...";
>
> Another caveat is, if one uses assert reasonably but then by some
> mistake assertions are unexpectedly turned off:
> "We'd have got an assertion failure here, so it must have gone there ..."
>
> Nothing of this post shall be construed as a discouraging against
> reasonable use of assertions. But they *are* part of the code, and by
> adding them, code size grows, and bug-likeliness is also proportional
> to code size. Adding assertions *can* be overdone.
Your argument boils down to, "If you use 'assert' contrary to the instructions
for its use, you'll have trouble."
Assertion side effects are against all instructions for their use. You might
as well say that exceptions can be "overdone" because someone might close a
resource from within one. Your warning is valid, but it applies to idioms
that a sensible programmer would avoid, and that tutorials and instructional
articles explicitly excoriate.
Code isn't "bloat" if it accomplishes something useful or even necessary. BAD
code is always bloat, irrespective of how compact it may be. Your advice to
avoid bad code is definitely good advice.
The correlation to invariants does provide a useful rule of thumb to avoid
both inappropriate and excessive applications of 'assert'. If you use
'assert' where there is no invariant, you might be screwing up. If you use
'assert' to do more than identify and prove an invariant, you might be
screwing up. If you put ANY kind of program-relevant activity or
domain-specific or state-changing logic into an 'assert', you might be
screwing up. If you /fail/ to prove an important invariant with an 'assert',
you might be screwing up. If you are unable to identify the invariants in
your code, with or without an 'assert', much less enforce them (NOT with
'assert'), you more than might be screwing up, you have guaran-dang-TEED that
your code ain't worth more'n' a pile of horse poop being pissed on by a
junkyard dog.
--
Lew
Thank you, Jeff Foxworthy.
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 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