This makes debugging quick and easy. Lots of people have tried, but nobody has come up with a really satisfactory solution. These are called at the beginning and end of each routine. The coding standard should require that this routine calls its predecessors when it is redefined. A way to call a function within the same object without checking the invariant.
Invariants form part of the external interface to an object.
The object does not need to obey them in its own implementation. Of course you can simply write a private routine which does not check the invariants. However a public routine which is also called internally presents a problem. A filter which extracts the assertions from the implementation and then prints out the short flat versions of the class definition. Or you could just try using Eiffel instead.