[Oberon] A first experience with obc
Chris Burrows
chris at cfbsoftware.com
Tue Dec 7 01:57:28 CET 2010
>-----Original Message-----
>From: Jan Verhoeven [mailto:jan at verhoeven272.nl]
>Sent: Tuesday, 7 December 2010 10:29 AM
>To: Oberon List
>Subject: [Oberon] A first experience with obc
>
>Hi friends,
>
>Here http://fruttenboel.verhoeven272.nl/obc/triples.html is a
>first experience with the obc compiler.
>It may also be used by people getting to know Oberon (like I
>am doing right now).
>
Good work! A couple of programming style recommendations I would make are:
1. BOOLEAN expressions
----------------------
PROCEDURE IsDigit (chr : CHAR) : BOOLEAN;
BEGIN
IF chr < '0' THEN RETURN FALSE END;
IF chr > '9' THEN RETURN FALSE END;
RETURN TRUE
END IsDigit;
It is not a good idea to get into the habit of having multiple exits from a
procedure. In this case they are unnecessary as the recommended Pascal /
Modula-2 / Oberon programming style would result in:
PROCEDURE IsDigit(ch: CHAR): BOOLEAN;
BEGIN
RETURN (ch >= '0') & (ch <= '9')
END IsDigit;
This use of a BOOLEAN expression is a variation of an example given in the
original Jensen and Wirth "Pascal User Manual and Report":
-----------------------------------------
If "found" is a variable of type Boolean, another frequent abuse of the if
statement can be illustrated by:
if a=b then found := true else found := false
A much simpler statement is:
found := a=b
-----------------------------------------
2. Loop Statements
------------------
LOOP with its arbitary exit points should only be used for the
loop-and-a-half situations if and ONLY IF a WHILE, REPEAT and FOR loop is
unsuitable. e.g.
LOOP
IF this = NIL THEN EXIT END;
...
...
this := this.next
END;
should be written as:
WHILE this # NIL DO
...
...
this := this.next
END;
Regards,
Chris
Chris Burrows
CFB Software
http://www.cfbsoftware.com
More information about the Oberon
mailing list