Home | January Newsletter | About | Brochure | Contact | Migration | Papers | Downloads  
 
 
 
 
 
Bad code: trim
The following code was taken from an apparently working commercial product. Note that I've seen C code just as bad (if not worse!).

  CONST BLANK = ' ';
  TYPE CHAR80 = PACKED ARRAY [1..80] OF CHAR;

  FUNCTION trim (C : CHAR80) : CHAR80;

  VAR
    I        : INT;
    IN_QUOTE : BOOLEAN;
    J,K      : INT;
    T        : CHAR80;

  BEGIN
    I := 1;
    WHILE (I<80) AND (C[I] = BLANK) DO
      I := I + 1;
    IN_QUOTE := FALSE;
    FOR J := I TO 80 DO
      BEGIN
        IF (C[J] = #39) THEN
           IF (J=1) OR ((C[J+1]=BLANK) AND (C[J+2]=BLANK)) THEN
           IN_QUOTE := NOT IN_QUOTE;
        T[J-(I-1)] := C[J];
      END;
    W := 80;
    WHILE (W > 0) AND (T[W]=BLANK) DO
      W := W-1;
    trim  := T;
  END;

I claim that there are at least 6 bugs in the above code.
(And that's not counting most of the readability problems.)

Try to identify the problems yourself, then click here to see my answers.

( Click here for the "How To Code Pascal" paper.)


(Updated 2000-05-03)


Back to top

 
   
  Home | January Newsletter | About | Brochure | Contact | Migration | Papers | Downloads  
 
All content copyright Resource3000 | Privacy Policy | www.Resource3000.com
 

Updated [3khat16.ico]HP3000 [3khat16.ico]3kMail [archive16.gif]