SourcePro : Essential Tools Module User's Guide : Common Mistakes : Keep Related Methods Consistent
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!