http://www.perlmonks.org?node_id=215881


in reply to Re: My coding guidelines
in thread My coding guidelines

Since I never use 'not' in my code ... yes. ;)

I take your point, however -- there are indeed exceptions. I think "english language" unary operators might be a whole class of exceptions since they parse (to us) as English rather than code.

By the way, why is '->' a binary operator? From perldoc:

"->" is an infix dereference operator, just as it is in C and C++. If the right side is either a ..., {...}, or a (...) subscript, then the left side must be either a hard or symbolic reference to an array, a hash, or a subroutine respectively. (Or technically speaking, a location capable of holding a hard reference, if it's an array or hash reference being used for assignment.) See perlreftut and perlref. Otherwise, the right side is a method name or a simple scalar variable containing either the method name or a subroutine reference, and the left side must be either an object (a blessed reference) or a class name (that is, a package name). See perlobj.

Seems like dereferencing is dereferencing is dereferencing, no RHS required. Is there an association going on as well?

Matt

Replies are listed 'Best First'.
Re: Re: Re: My coding guidelines
by helgi (Hermit) on Nov 28, 2002 at 16:35 UTC
    You wrote:
    Since I never use 'not' in my code ... yes. ;)

    If not, why not? What do you use instead?
    I find not is usually the cleanest and most readable operator for all sorts of tests.

    die "$usage" if not @ARGV; if (not -r $file) { die "Cannot read $file\n"; } print "$pattern not found in $file\n" if not $found;
    And so forth.

    --
    Regards,
    Helgi Briem
    helgi AT decode DOT is

      If not, why not? What do you use instead? I find not is usually the cleanest and most readable operator for all sorts of tests.

      It's just a matter of taste. I'm not against using not, I just don't happen to prefer it.

      You give the following example:

      print "$pattern not found in $file\n" if not $found;

      In this case I would use unless:

      print "$pattern not found in $file\n" unless $found;

      As for if (not -r $file) {...}, I typically use the bang operator (!) rather than not -- just a matter of preference, probably due to my C influences.

      Matt

        print "$pattern not found in $file\n" unless $found;
        I use unless when I expect that the print will be executed most of the time - unless the condition happens to be true. In the quoted case, I'd probably use if not, as the if highlights the fact that the message is only printed if the pattern wasn't found. Just like the way you use "if" and "unless" in English.

        Makeshifts last the longest.

        I prefer never to use the ! operator if I can possibly avoid it. It is much easier for me to miss when skimming through code and my brain doesn't parse it autmoatically like it does "not".

        For much the same reason I always prefer "or" to "||" and "and" to "&&". My brain already knows how to parse these English words and I don't need to teach it new tricks.

        --
        Regards,
        Helgi Briem
        helgi AT decode DOT is