[squeak-dev] The Trunk: Kernel-ul.709.mcz

Tobias Pape Das.Linux at gmx.de
Wed Sep 5 11:51:00 UTC 2012


Am 05.09.2012 um 13:27 schrieb Frank Shearar:

> On 5 September 2012 12:10, Tobias Pape <Das.Linux at gmx.de> wrote:
>> Am 05.09.2012 um 11:42 schrieb Frank Shearar:
>> 
>>> On 4 September 2012 18:03, Frank Shearar <frank.shearar at gmail.com> wrote:
>>> 
>>> OK, so how about pushing the env ifNil: [] into ensure? Do you think
>>> this would look a bit less weird?:
>>> 
>>> Process >> #environmentAt: key ifAbsentPut: aBlock
>>> 
>>>       self ensureEnvironment.
>>>       ^env at: key ifAbsentPut: aBlock
>>> 
>>> I dislike the necessity to remember to "self ensureEnvironment" before
>>> any access of env, but I take your point regarding exposing the
>>> dictionary.
>> 
>> 
>> What about
>> 
>> Process >> #pvtEnvironment
>> 
>>        ^ env ifNil: [env := Dictionary new]
>> 
>> Process >> #environmentAt: key ifAbsentPut: aBlock
>> 
>>        ^ self pvtEnvironment at: key ifAbsentPut: aBlock
>> 
>> 
>> (naming subject to bikeshedding,
>> eg, name it pvtEnvironment, ensureEnvironment, ensuredEnvironment,
>> theEnvironment ...)
> 
> While #pvtEnvironment is more forceful than categorising #environment
> as 'private' in indicating "don't use this", I expect Levente to still
> say "yes but that still exposes the dictionary!"


so does aProcess instVarNamed: 'env' (SCRN)
The point is that the 
…
	self ensureEnvironment.
	env …
relies too much on side-effects, imho.

Two things here:
1) what is the harm of exposing the dictionary?
   If you use it, you are guilty nonetheless
2) What speaks against initalizing the env in an #initialize?
   That would remove these checks alltogether :)

Best
	-Tobias




More information about the Squeak-dev mailing list