in reply to Re: Good use for prototypes. On methods no less!
in thread Good use for prototypes. On methods no less!

I don't necessarily want or need to do this, but yes, I was considering this in the context of best practices.

As you note, and Chromatic points out, the malicious user can easily get around this defense, but what about the novice user? it might help prevent a few bad cases from creeping into the code base. I have also been considering recommending an empty prototype on functions that do not take any args as this appears to be the one case where they are useful at pointing out usage errors early (compile time) to the user.

At a minimum, I am wondering about a perl critic exception to allow smart use of prototypes.

  • Comment on Re^2: Good use for prototypes. On methods no less!

Replies are listed 'Best First'.
Re^3: Good use for prototypes. On methods no less!
by thargas (Deacon) on Jun 05, 2012 at 12:09 UTC

    OK. If you're considering this in the context of novice users, I would say, please don't do this. The error you get is going to be misleading:

    Too many arguments for Thing::hack at ./proto-method line 16, near "1) +" Execution of ./proto-method aborted due to compilation errors.

    If your goal is to help novice users, this seems to me not to be the a good idea, as the error says nothing about the actual problem. I don't think that this idea will help anyone, except in the sense that calling the method as a function will fail, unless they pass it no args.

    Sorry. I've got no alternative suggestion, but I don't like this idea.

      Good point about novices. If the error message actually said "method called as a function" then it might be nice.

      I think I will give up on this one. Thanks for all the feedback!