The Codeless Code: Case 205 Plural Effusion
======
Master Suku and her apprentices had chosen to end the
summer in a valley below a great mountain range, conducting
code reviews at a minor temple. This they felt would be
restful work, reinvigorating them for the long climb ahead.
Yet the monks of that temple were infuriatingly negligent.
As the days waned, Suku’s patience did also.
One morning Suku entered the cubicle of a particularly
obtuse monk and lay a printout across his keyboard.
“Each instance of this class represents a row of the
Customers table, is that true?” asked Suku.
“True, true,” said the monk.
“Which means that each instance represents a single
customer, does it not?” asked Suku.
“It does,” said the monk, “it does.”
“Yet you named this class Customers instead of Customer,”
said Suku. “You also gave the name ‘customers’ to variables
which hold a single instance, and ‘getCustomers’ to methods
which return a single instance.”
“I did, did I?” asked the monk.
“Yes,” said Suku. “Curiously, you also gave the name
‘customers’ to variables which hold a collection of
instances, and ‘getCustomers’ to methods which return a
collection.”
“I see,” nodded the monk, furrowing his brow and staring
hard at the printout. “I see...”
Suku smiled a tight, unpleasant smile. Had her apprentices
been present they would surely have backed away; for it was
rumored that their master was part serpent, and if provoked
she could unhinge her jaw and swallow a monk whole.
“All that I have said is equally true for the tables Parts
and Packages and Purchases, and their associated classes.
Which makes your code quite—”
“Consistent,” said the monk proudly. “Consistent.”
What happened in the next moment none can say, but it is
certain that the monk was already unconscious by the time he
hit the floor.
The monk awoke in the center of an abandoned barn. His ankle
had been chained to a stone meant for tethering bulls.
On the floor beside him lay a pair of scissors, a
nasty-looking bundle of tubes bristling with wires and
blinking lights, and a note: