Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
More | Login | Reply
Loading... please wait.
  • Curiously, Ben Tilly mentioned that at least one company would ding you on a code review for using shift [].

    Don't you think that you've just found a special case? Unless I misunderstood you, you would dislike the following:

      my ($self,$user,$pass,$action) = @_;

    For the that example, it seems clearer to use @_ rather than shift four times. It's clean and concise, though one might argue about the interface.

      my ($class, @args) = @_;

    How would you recommend using shift for that? It

    • by KM (4) on 2002.11.19 16:33 (#14860) Journal
      No misunderstanding... I like shift. It's sort of like using warnings and strict.. helps protect you from stupid things that can occur (like this situation, copying large parts of data, inadvertandly having @_ diddled with unexpectedly, etc...) Also, I read code vertically, not horizontally (when scanning code), so 4 or more vertical shifts is better to me than many linear variables.

      Most things I write lately uses named params anyways. So there is only 1 or 2 shifts (2 if it is an object, for $self and the args). This is simply more scalable and maintainable (in my opinion).

      So, I like shift and will continue to use it unless there is a compelling (or code-wise) reason not to.

      • KM wrote: Most things I write lately uses named params anyways.

        Hmm... perhaps you might be the target audience for what is arguably my most useless module [] (Sub::NamedParams).

        Of course, if I ever get the courage to upload Acme::Code::Police [], then that will qualify as my most useless module. I've been hesitant to do so due to potential hate mail -- not to mention lawsuits :)

        • Hmmm... looks like simply passing a hashref is easier than adding a module to pass a hashref :) But, maybe I'll take a closer peek. I tend to not like using modules to do things which are easy to do without them.

          I still have to upload my Acme::ReturnOne and Acme::ReturnZero to be the two most useless CPAN modules.... EVER!!