Code&Fix - ein Beispiel

Eine simple C-Funktion Copy(), liest vom Keyboard und schreibt auf einen Printer.

Copy - Version 1

Image Copy1


Copy - Version 2

Es wäre schön auch von Files lesen zu können. Aber: Es soll backward-compatible sein, vorhandene Applikationen müssen nichts ändern.

Image Copy2

Globale Variable als Flag


Copy - Version 3

Oh je, da hat sich ein Fehler eingeschlichen: Es soll kein EOF ausgegeben werden !

Bug-fix:
Image Copy3


Copy - Version 4

Ausgabe in Files wäre ja auch noch ganz nett. Natürlich backward-compatible, also noch eine globale Variable !

Image Copy4

Die Funktion wird immer grösser und komplexer, die Verwendung komplizierter ...


Copy - Version 5

Zeit für ein ordentliches Re-design. Eine erfahrene C Programmiererin zeigt uns wie man's richtig macht:
Image Copy5
OO-like in C: FILE wie Klasse für generische Byte-Streams.

ABER: Alle Stellen in denen Copy() verwendet wird müssen entsprechend angepasst werden !


Typisches Beispiel wie Code altert und quasi vergammelt.

OO-Analyse und -Design:


Image wtfm


GDuckeck 2019-08-01