[fpc-pascal] The reason why linus torvalds hate-pascal
Alan Krause
alank at shermanloan.com
Thu Apr 17 19:54:00 CEST 2008
Rodrigo Palhano wrote:
> this
>
>>> if ( payments per year <> 12 ) then begin
>>> Result := 1;
>>> exit;
>>> end;
>>> if ( rate = 0 ) then begin
>>> Result := 2;
>>> exit;
>>> end;
>
> is better than this ?
>
> if ( payments per year <> 12 ) then begin
> Result := 1
> Else if ( rate = 0 ) then
> Result := 2;
>
> or even this ?
In my opinion, yes.
First of all, you would need to append an else clause to your example
that the code following my block would need to be placed in.
e.g.
if ( payments per year <> 12 ) then begin
Result := 1;
end else if ( rate = 0 ) then begin
Result := 2;
end else begin
.. lots o' code here
end; // end if - else if - else
From a code readability standpoint, if I am someone trying to
understand the above code and I want to know what happens when the rate
is zero, I see that a result code is set. I then need to parse down to
the end of the multiple if-else if-else code to see if anything else
happens after that block of code.
With the code I prefer (at the top of the email), it is clear that a
result code is set, and then BAM! (as Emeril Lagasse would say), I am
done. It also reduces another level of indentation, which I like.
Finally, during code maintenance, some other person working on the code
might append new code at the end of the routine, but not place it inside
the "end else begin" block, not thinking about what might happen with
the result-code generating (and more exceptional) cases.
These are just my preferences, I'm not saying they are the best or are
THE correct way of doing things. In my experience, I have found that
this method works well for *me*.
Alan
More information about the fpc-pascal
mailing list