> Yes, it is used to catch programming errors by introducing a little
type
> safety. How many times have you written this in your project:
>
> function showMenu(obj) {
> if(obj instanceof MenuItem) {
> obj.getNode().style.visibility = "visible";
> } else throw new Error("Invalid parameter!");
> }
>
> Now you can just do this:
>
> function showMenu(obj) {
> MenuItem(obj).getNode().style.visibility = "visible";
> }
>
> This convention just makes codifying assertions a little more uniform.
You
> know for sure that the parameter is of the correct type because (a) if
it
> isn't it, will be converted to the correct type; and (b) if it cannot
be
> converted, it will throw an error. This allows you to quickly detect
and
> correct bugs in your code and allows others (whom use your library) to
> detect bugs in their code.
I have to admit I didn't read the full original email, and the intention
wasn't clear to me. With this one, I now see what you're getting at,
and it seems like a cool idea to me. The only concern I'd have is that
the syntax isn't immediately clear to someone unfamiliar with the code.
It might be better to have a 'cast' class method or something:
MenuItem.cast(obj).getNode().style.visibility = 'visible';
Having it be a dual-purpose constructor might confuse people. Or maybe
it wouldn't, I dunno. Just some thoughts.
Greg
_______________________________________________
Rails-spinoffs mailing list
[email protected]
http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffs