Keep Related Methods Consistent
When you design classes that will be used with the Essential Tools Module, you may be tempted to take short cuts, like providing a simplistic hash method, or operator<(), since you “know it will never be used anyhow.” Decisions like this can have disastrous maintenance consequences later. Unless you have a very good reason, it makes sense to ensure, for example, that operator<(), operator==(), compareTo(), and isEqual() are based on the same information. You must also be sure that values which are isEqual() or == with each other have the same hash value, since otherwise they will never be found if placed into a collection that uses hashing techniques. A little extra effort at the beginning can pay big dividends in reduced debugging time later on!