Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#19

Re: lokale Variablen mit globaler Lebensdauer?

  Alt 13. Jul 2005, 17:00
Hi,

ich werde mich mal outen und entgegen allen anderen Aussagen hier behaupten: das vorinitialisierte und globale Variablen die nur lokal für eine Funktion sichtbar sind eine konsequente Fortsetzung der modularen Programmierung ist. Ergo: sie sind restriktiver und vermeiden gegenüber normalen globalen Variablen eine Fehlbenutzung im restlichen Code. Sie sind also aus meiner Sicht absolut guter Programmierstil.

Behauptungen wie "globale Variablen" seien Blödsinn und wer sie benutzt gehört "erschossen" sind unkonstruktiv und sogar noch dümmlich falsch. Denn alle Variablen eines Programmes sind aus Sicht der CPU immer auch global. Der einzigste Unterschied für uns zwischen globalen, lokalen, lokal globalen oder Feldern eines Objects als Variablen ist nur deshalb vorhanden weil der Compiler/Sprache so programmiert wurde. Es sind also reine Festlegungen, bzw. Definitionen die unsere Art und Weise zu programmieren verbessern sollen. Ein wichtiges Kriterium von N.Wirth bei der Schaffung von PASCAL war die Idee der "Restriktionen". D.h. die Festlegung von klaren Schnittstellen in die Programmiersprache.

Wenn nun eine globale Variable in ihrem Wirkungsbereich global zu allen Funktionen einer Unit ist, sie aber tatsächlich nur in einer einzigsten Funktion einer Unit benutzt wird, dann ist es ein guter Programmierstil durch absichtliche Restriktionen im Sichtbarkeitsbereich dieser Variablen dafür zu sorgen das es zu keinen Fehlern in der Programmierung kommen kann. Nun, eine statische Variable in einer lokalen Funktion, sprich eine globale Variable nur definiert im Gültigkeitsbereich der lokalen Funktion ist eine konsequente Fortführung des Gedankens der Restriktivität, absolut sauberer Programmierstil.

Statt auf Delphi 9/10 zu warten mit mehr versprochenen Features in der Programiersprache oder sich auf pauschale Aussagen wie "OOP ist gut, globale Variablen sind kein OOP und deshalb schlecht" sollte man einfach mal versuchen das Hirn vorher einzuschalten und einfach mal logisch solche Aussagen analysieren, statt irgendwelche Meinungen wiederzukauen.
Mich stört es ungemein das es offentsichtlich einen Trend gibt der dazu führt das man Glaubenskriege über die bessere Programmiersprache oder -Stil führen kann. Die offensichtliche Grundlage solcher Diskussionen ist die Überbewertung der einzelnen Sprache/Stiles so als wären es wertvolle Dinge. Nein, es sind nur Werkzeuge die wir selber erschaffen haben. Sie basieren auf Vorstellungen von einzelnen Leuten die nicht richtig oder nicht falsch sein müssen. Der einzigst relevante Unterschied in den Sprachen ist deren Konzept auf dem sie basieren. Nun, und PASCAL basiert auf der Restriktion, der Restriktion einen String nicht wie einen ordinalen Integer benutzen zu können, der Restriktion die Sichtbarkeit von Datenobjekten, eben Variablen auf das nötigste zu beschränken. Führt man diesen Gedanken weiter so kommt man auch irgendwan auf globale Variablen deren Gültigkeit global ist aber deren Sichtbarkeit lokal auf diese eine Funktion beschränkt wurde. Was, liebe Leute, soll daran falsch sein ?

Wie gesagt: Ich oute mich und wenn es Sinn macht dann benutze ich erst recht solche globalen Variablen mit eingeschränkter Sichtbarkeit. Einfach weil es eine sinnvolle Funktionalität darstellt.

Gruß Hagen
  Mit Zitat antworten Zitat