[squeak-dev] The Inbox: Tools-LM.828.mcz
asqueaker at gmail.com
Tue Aug 14 19:48:24 UTC 2018
On Mon, Aug 13, 2018 at 9:59 PM, Eliot Miranda <eliot.miranda at gmail.com> wrote:
> + obj := parents at: obj ifAbsent: [nil].
> - obj := parents at: obj ifAbsent: .
> Please no. One must know that the empty block evaluates to nil. It is
> illiterate not to. So the verbosity is bad; it implies uncertainty (“does
> the empty block evaluate to nil? maybe not ‘cuz here it’s written
> explicitly”), it requires more typing, it’s ugly.
But the return value from the block is ^actually consumed^ by the
while condition, so making an explicit reference to nil greatly
improves readability. If the value were NOT consumed, then I would
agree that no return object should be specified, however I would
implore you never to write this code: . Instead:
[ "always put an intention-revealing comment inside" ]
Why? Because emptiness is inherently ambiguous -- e.g., did the
programmer forget to fill that part in? Or was he intending to
actually "return nil". Talk about uncertainty!
I've always felt our code should appeal to the _broadest_ audience
possible, so that even those illiterate in Smalltalk could still read
it and follow it. It requires an expert Smalltalker and deep
consideration (and prioritization!) of the human <---> Smalltalk
"negotiation" to write code that is, all at once, terse, beautiful and
able be easily readable even to the broadest possible audience.
More information about the Squeak-dev