If the assertion fails, you immediately know either your code or your assumption is wrong Assertions help catch bugs closer to the source Assumptions should also be documented
need Encapsulation is one of the key principles of OOP Class extensions are great for private methods/data Categories are great for protected methods/data