| Here we see the classic tension between synthetic names and natural names. The best discussion I've seen of this topic is in the 1st chapter (which is fortunately freely accessible and concise) of this excellent programming book: https://leanpub.com/elementsofclojure/read_sample Relevant excerpt: > Most natural names have a rich, varied collection of senses.3 To avoid ambiguity we must use synthetic names, which have no intuitive sense in the context of our code. > Category theory is a rich source of synthetic names. ‘Monad’, to most readers, means nothing. As a result, we can define it to mean anything. Synthetic names turn comprehension into a binary proposition: either you understand it or you don’t. Between experts, synthetic names can be used to communicate without ambiguity. Novices are forced to either learn or walk away. > Conversely, a natural name is at first understood as one of its many senses. Everyone understands, more or less, what an id is. In a large group, however, these understandings might have small but important differences. These understandings are refined, and gradually converge, through examination of the documentation and code. At the cost of some ambiguity, novices are able to participate right away. > Natural names allow every reader, novice or expert, to reason by analogy. Reasoning by analogy is a powerful tool, especially when our software models and interacts with the real world. Synthetic names defy analogies,4 and prevent novices from understanding even the basic intent behind your code. Choose accordingly. |