David,

> On 11 Jan 2016, at 10:01, David Allouche <[email protected]> wrote:
> 
> I happened to look at the new code for LayoutFrame>>#hash
> 
> hash
>       ^self species hash bitXor: 
>               (self leftFraction bitXor: 
>               (self leftOffset bitXor: 
>               (self topFraction bitXor:
>               (self topOffset bitXor: 
>               (self rightFraction bitXor: 
>               (self rightOffset bitXor: 
>               (self bottomFraction bitXor: 
>               self bottomOffset)))))))
> 
> This is a terrible, terrible way to compute a hash.
> 
> 0 xor 0 = 1 xor 1 = 2 xor 2 = etc.
> 
> NEVER compute hashes with xor, that's wrong, and it causes horrible, hard to 
> debug, performance bugs down the road.

Yeah, that doesn't look very good ;-)

> SequenceableCollection>>#hash looks more like a correct way of doing it. I do 
> not know what is the correct, efficient way to reuse this logic in 
> LayoutFrame>>#hash.

There is actually a 2 part book just about hashing in Smalltalk:

http://www.lulu.com/shop/andres-valloud/hashing-in-smalltalk-theory-and-practice/paperback/product-3788892.html

It is said to be very good, I sadly have not yet read it ;-)

> By the way, how do you guys do code reviews for code integrated into the core?

'Pharo is yours' which means: if you encounter something odd, you are 
encouraged to improve it. Maybe first discuss it on the ML. If necessary create 
an issue. Better provide a fix.

Sven




Reply via email to