Intention-Revealing Names

Labeling distinctions allows us to clearly distinguish between them. But it also transfers the meaning behind the label to the labelled object. Thus, labels must be chosen carefully so that the names hint at the right meaning.

From another point of view, the existence of objects is the consequence of a particular set of intentions. If you do not know the intentions because whoever wrote the code in the first place did not spell them out explicitly, then you are left with figuring them out. The key observation here is that it is easier to figure intentions out when the objects are labelled with intention-revealing names.

> Developers should always keep a thesaurus handy.

This kind of self-documentation can lead to the discovery of unsuspected properties of the labelled objects. The potential impact of good quality names should never be underestimated.