Stephen Colebourne wrote:
Stephen Kestle wrote:
If an Equator is determined to be something worthwhile for the next (generic) version of Collections, I can provide interfaces, default implementations tests etc.

I certainly think that there are multiple ways to to equals checks. In my day job we compare by ==, equals and id.

Done well, this would make a good enhancement in the 'new' collections.
Ok - having got some positive feedback, I will go on to the first issue: the Equator interface design.

I propose two methods: one for equality checking, and another for hash codes. This ensures that when used, the general contract of Object.equals() and Object.hashCode() are followed in a similar fashion.

There is also the problem of naming here - what should the methods be called? We want it to read well, so we'll start by listing the java equals and compare methods. Summary of the rest of the post: I prefer boolean equate() and int hash().

if ( object1.equals(object2) )
   "if object1 equals object2 then..." - pretty simple

if ( object1.compareTo(object2) > 1 )
"if object1 compare to object2 is greater than 1 then..." - "compared to" would make more sense in a sentence, but we favour active tenses, since methods are an instruction on an object. Probably better is to phrase it like:
   "if (object1: compare [yourself] to object2) is greater than 1 then..."

if ( comparator.compare(object1, object2) > 1 )
   "if (comparator: compare object1 and object2) is greater than 1 then..."

Getting hash out of the way is easy: hash(). But what's the correct verb for equality?

if ( equator.equate(object1, object2) )
"if (equator: equate object1 and object2) then..." - I prefer this one at the moment

if ( equator.equalTo(object1, object2) )
"if (equator: is object1 equal to object2) then ..." - I have this at the moment, but it requires reshuffling of the sentence.

So this post is a bit verbose, but naming is one of the most important tasks of development, and since this is rather foundational...

Cheers

Stephen (K)


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to