Re: About using assertion
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