001
27.04.2005, 17:39 Uhr
virtual
Sexiest Bit alive (Operator)
|
Eine Gute vorgehensweise ist in der Regel die Methode, das gesamte Programme erstmal in grobe Teilprobleme zu zerlegen, wobei diese Teilprobleme dann Funktionen bilden könnten: Danach kann man die Teilprobleme wiederum zerlegen und in weitere Funktionen zerlegen.
Bei der Wahl, was eine Funktion ist und was nicht, gibt es im wesentlichen zwei Kritieren, die dazu führen, daß ein Block einer vorhandenen Funktion (oder eben main) zu einer eigenständigen Funktion wird:
1. der Block kommt häufiger (mehr als einmal) an verschiedenen Stellen vor, dh die Funktion ist vor allem deshalb da, um Coderedundanzen zu vermeiden.
2. der Block kommt zwar nicht häufiger vor, aber ist bestandteil einer recht großen Funktion. Eine eigenständige Funktion kann helfen, den Code übersichtlicher zu gestalten, dh einerseits wird die umgebende Funktion übersichtlicher, andererseits wird bei der ausgelagerten Funktion deutlich, von welchen Parametern und damit Einflußgrößen der Programmablauf abhängt.
Man kann die unter (1) und (2) genannten Kriterien sicherlich theoretsich unbegrenzt rekursiv anwenden, so daß man lauter Funktionen ohne "echten" Code hat. Dh man sollte es nicht übertreiben.
Während die untergrenze einer Funktion recht schwer zu bestimmen ist, ist es bei der Obergrenze recht einach: Funktionen, die mehr als 3 Verschachtelungsebenen von Blöcken haben tendieren dazu, schwer verstanden zu werden und es sollte geprüft werden, inwieweit man innere Blöcke auslagern kann (in eigenständige Funktionen).
Eine weitere Kunst ist es, zu den Funktionen die korrekten Parameterlisten zu bestimmten. Es bringt dir in der Regel nix, eine super flexible Funktion zu irgend einem Problem zu haben, aber die Funktion braucht 16 parameter oder so... Das wäre ein gutes Zeichen dafür, daß die Funktion willkürlich erstellt wurde und sich niemand gedanken dazu gemacht hat, was sie eigentlich wirklich gut können soll.
Das ist jetzt alles nur meine persönliche Meinung, kein gesetz. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |