@dannyboy385: Wenn Du weist dass das unelegant, nicht fehlerfrei, und vor allem sinnlos ist, was soll das dann? Der Quelltext ist jedenfalls komplett für die Tonne. Da ist nichts was man irgendwie retten könnte ohne es komplett neu und anders schreiben zu müssen, also lohnt eine irgendwie geartete Reparatur auch nicht. Und da sind auch absolut sinnfreie Stücke drin die irgendwie nach zufällig erzeugt aussehen. Wie das ``p=g+10`` gefolgt von einem ``while g == p:`` — WTF‽ Und die ``while``-Schleife hat dann auch noch einen ``else``-Zweig ohne ein ``break``. Würde das natürlich auch nicht besser machen weil der Schleifenkörper ja sowieso toter Code ist, aber wie kommt man auf so etwas‽ Freitag Abend‽ Don't drink and code…
Programme schreibt man nicht komplett runter und testet sie dann, sondern man entwickelt sie Stück für Stück, Funktion für Funktion, und *testet* jede Funktion, ob sie das tut was sie soll, bevor man mit der nächsten Funktion weiter macht. So verhindert man das man am Ende eine Menge Probleme in viel Quelltext hat.
Funktionen die testbar sind verwenden weder ``global`` noch werden Funktionsaufrufe als eine Art unbedingter Sprung zu einem benannten Stück Code missbraucht. Funktionen werden so geschrieben das sie eine Aufgabe erledigen und nur die, und danach zum Aufrufer zurück kehren. Eventuell mit einem Ergebnis als Rückgabewert. Und alle Werte, ausser Konstanten die von aussen kommen, werden als Argumente übergeben, und nicht auf magische Weise aus der ”Umgebung” genommen.
Keine einzige der ”Funktionen” ist problemlos für sich genommen testbar!
Namen sind ebenfalls wichtig. Bei sinnvollerem Quelltext sollten Namen so gewählt werden das der Leser das Programm leichter versteht. Das helfen einbuchstabige Namen eher selten.