(alternate title: The "Fail Early, Fail Often" Principle in Action)
I would like to award Adobe the "best ever implementation of indexOf
". Ready for it? Here it is:
override flash_proxy function callProperty(name:*, ... rest):* {
return null;
}
This beauty can be found in mx.collections.ListCollectionView
.
And the kicker? The function's documentation:
/**
* @private
* Any methods that can't be found on this class shouldn't be called,
* so return null
*/
The author clearly knew that unknown methods* shouldn't be called… But instead of doing something sensible – like throwing an exception – they do something wholly nonsensical and return null
. Or, of course, they could also have left the function unimplemented, which would result in a strange and unhelpful exception… But, of course, I would expect nothing but the best from the Flex standard library.
Next up: why implicit conversions from null
to int
are always wrong.
</rant>
*: the magic callProperty
method is called on subclasses of Proxy
when a method can't be found. For example if bar
is not a method of foo
, executing foo.bar()
will call foo.callProperty("bar")
.
PS: Instead of calling indexOf
, I should have been calling getItemIndex
.