[PPL-devel] Redundant elses
bagnara at cs.unipr.it
Tue Oct 4 16:21:08 CEST 2005
Matthew Mundell wrote:
> The `else' repeats the information implied by the final return or
But the `else' makes it clearer that we are talking about mutually
exclusive conditions. And it is also more robust: what happens
if someone changes the "then" branch without noticing that
you removed the `else'?
> Adding the else makes it less clear that the body of the "then" branch
> of the `if' always ends in a return or goto.
>>If, in addition, you have something of the form
>> if (a)
>> // comment
>> return ...
> Did you mean this?
> if (a)
> return ...
> // comment
No, I meant what I wrote: in the original version, `else' and
the comment are part of the same "phrase". If you take out the
`else' then the comment assumes an "unconditional flavor"
that can only be recovered by noticing that the "then" branch
forces a certain control-flow. Taking out the `else' makes
two sections of code that could/should be indepedent from one another
strongly coupled: if you want to keep correctness you must
make sure the "then" branch has the property to go somewhere
else at the end.
To come back to the subject: if you only look at semantics,
it is true that such elses are redundant; but if you look
at the big picture (and this includes readability) things are
more complex. Please notice that I am not arguing in favor
of using this kind of elses everywhere: I only question that
semantic redundancy is a good reason to take a random `else'
and remove it. Whence my original question about the meaning
of "redundant else".
Prof. Roberto Bagnara
Computer Science Group
Department of Mathematics, University of Parma, Italy
mailto:bagnara at cs.unipr.it
More information about the PPL-devel