Path: csiph.com!x330-a1.tempe.blueboxinc.net!aioe.org!feeder.news-service.com!news.albasani.net!.POSTED!not-for-mail From: Lew Newsgroups: comp.lang.java.programmer Subject: Re: About using assertion Date: Mon, 09 May 2011 14:53:11 -0400 Organization: albasani.net Lines: 47 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: news.albasani.net YX5DNzYhred18OTdKyq6jiB8Rx4+MPLjlv3vYlrUATFHaaJMaAHW6D8B6FUIBjq3zsTJpecMQqDP3Lpn+WBH0g== NNTP-Posting-Date: Mon, 9 May 2011 18:53:08 +0000 (UTC) Injection-Info: news.albasani.net; logging-data="Z33jEc8v8ZGdQpY9JaFTuhTT3ES6z+brDTRax80taTCUVQSMRMTHbe5ztmVqWJYvdriy5G779B55fkV1GM/DBF884YJ5m5ifoeLP1mv7bp+U8emq8ORtvzl6MkSRJyTL"; mail-complaints-to="abuse@albasani.net" User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110424 Thunderbird/3.1.10 In-Reply-To: Cancel-Lock: sha1:+VTXsXWFRQqZgBiQHRaEB2Y7R8I= Xref: x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:3871 markspace wrote: > byhesed wrote: >> I am reading a book about object-oriented design pattern. >> The book, Object-Oriented Software Development Using Java 2/e by >> Xiaoping Jia, says that... >> >>     Using assertions derived from the preconditions for all methods is >> known as defensive programming. >>     Its aim is to prevent a component from being misused. >> >>     Design Guideline: Use Assertions Aggressively >> >>     Each method should include assertions on the preconditions and >> postconditions of the method and invariants of the class >> >> Do I have to always use assertion? >> Is it better to use assertion? >> >> What's your idea? > Personally, I don't use assertions very much. Instead, I rely on aggressive > unit testing rather than aggressive use of assertions. Different tools that do different things. Unit tests and assertions are in no wise interchangeable. > This doesn't mean Xiaoping is wrong. I should probably use assertions more > than I do. You certainly should use them differently from how you do. Whether that means more will emerge from your corrected usage. > My advice: Use assertions as you think best. Observe how your opinion and > needs change over time. Should you have used them more? Or should you rely on > them less? These things aren't fixed pieces of knowledge, like the stars in > the night sky. The state of the art in computer science changes over time. Actually, the simplest use of 'assert' is straightforward and by objective rule. There's not a lot of "art" to it - just 'assert' your invariants. Of course, that means you have to identify your invariants, but you need to do that anyway. That is one part of the "state of the art in computer science" that most emphatically does *not* change over time. -- Lew Honi soit qui mal y pense. http://upload.wikimedia.org/wikipedia/commons/c/cf/Friz.jpg