Don't code “clever!” The simplest and most expressive code is always best:
sub same_sign { my ($x,$y) = @_; if ( undef($x) or undef($y)) { return 0; # "undef" is never same-sign } if ( ( ($x >= 0) and ($y >= 0) ) or ( ($x < 0) and ($y < 0) ) ) { return 1; } else { return 0; } }
Is this (caution: extemporaneous Perl...) module terse? No. Could it have been written with fewer characters? Yes. But neither of those considerations are “the point.” What matters to me is that it is obvious what this code is actually supposed to do. Everything about it, including the white space, is designed to encourage readability among humans. The Perl compiler can take care of itself.
In reply to Re: Seeing if two numbers have the same sign
by Anonymous Monk
in thread Seeing if two numbers have the same sign
by grinder
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |