First, my message was *defending* most of the short names
that someone else was attacking.�� For the record, I am
*far* more worried about the fragility of typical Smalltalk
code than I am about method names, which are generally
pretty good.
Second, the criterion was implicit but fairly clear:
if an abbreviation of any kind is sufficiently common
that someone who wants the semantics will recognise the
identifier, use it.�� "ulp" is MORE familiar to people
who need it than "unitOfLeastPrecision" (spit), so it is
a better name.�� In the same way, HTTP is a *better* name
than HyperTextWhatever (amongst other things because the
word is Hypertext, so HyperText violates a Smalltalk style
rule that says internal capitals at *word* boundaries)
because it is familiar and takes less effort to recognise
than the fully spelled out thing.
Third, the rule as always is "intention-revealing names".
(Another Smalltalk style rule that I did not invent.)
#onDNU:do: is a confusing name because when I saw it I
expected the first argument to be a signalled exception,
not a selector.���� There is nothing wrong with the DNU bit;
if you know you want to catch a DNU you are probably
familiar with "DNU" (and don't want to fuss with whether
it means Does Not Understand or Did Not Understand).
As a particular example from the list, #log or
#logarithm are both ambiguous, while #ln is NOT
ambiguous (in the context of numbers), making it a
better name,
Finally, the significant point was not where I live
(about 1/1600 of the world's population live here)
but when I went to primary school, which was somewhat
more than 50 years ago.�� Twenty years before that,
children learned how to calculate square roots by hand.
(Cue Four Yorkshiremen. :-))