in reply to Re: a simple exercise in readability
in thread a simple exercise in readability

I quite like your use of the ternary operator there. I tend to be reluctant to use it because of the usual increased readability of explicit if/else statements (at least in most of the code that I write), though in this case I think it is well suited to the task.

I think there's a limit to the value of explicit step-by-step variable assignment and use, however, for readability. In this case, the arithmetic formula used to produce results seems obfuscated by being broken up the way you've done so -- though it may well just be a matter of taste, or I may just be weird to think it's more readable to keep the formula a little more integrated.

I'd appreciate it if you'd have a look at the relevant parts of my response to liverpole, and perhaps comment on the way I used explicit variable names for the start and end integers, adjusting perhaps for the use of the ternary operator.

In fact, I'll cut out the middleman and provide a version of the relevant snippet using the ternary operator:

my $start = ( $opt_s ) ? $ARGV[0] : $ARGV[0] + 1; my $end = $ARGV[1]; print( ($end - $start + 1) * ($start + $end) / 2 );

edit: code typo pointed out by kyle at roughly the same instant I noticed it myself

print substr("Just another Perl hacker", 0, -2);
- apotheon
CopyWrite Chad Perrin

Replies are listed 'Best First'.
Re^3: a simple exercise in readability
by kyle (Abbot) on Jan 15, 2007 at 16:59 UTC

    I like things broken up and named. For a relatively simple operation like this, it doesn't make as much of a difference. Yours is shorter and still fairly easy to understand (easier with a comment). I'd say it's a matter of taste.

    One thing that might recommend my version over yours is a bug that we both had (I've edited mine since), namely the range length should be ($end - $start + 1). I might say that mine (with the name) makes this bug more obvious. Then again, maybe not. Someone might read the variable name and not the formula, and just assume it's right when it's not.