![]() |
Globale Variablen - warum in der DP so verpönt?
Die einschlägigen Beiträge habe ich schon gelesen!!!
Globale Variablen machen m.M.n. *nur* dann Ärger, wenn man sie zur "Zwischenspeicherung" von irgendwelchen Informationen benutzt und man seinen *eigenen* Sourcecode dann nicht mehr erkennt. Bislang hatte ich noch nie Probleme, meinen eigenen Sourcecode wiederzuerkennen. Womit haben denn die "Globalen-Variablen-Feinde" Probleme? Mal wirklich ganz naiv gefragt? Echt neugierig, new4toms |
Re: Globale Variablen - warum in der DP so verpönt?
Aus meiner Sicht sprechen 2 Dinge gegen globale Variablen:
1) Sie sind im Konzept der OOP nicht existent, und wäre dort (wenn in Reinform praktiziert) auch schlicht unbrauchbar. 2) Sie müllen einem das Projekt voll, und zwar mit ihrem Namen. Wenn ich in Unit1 eine glob. Variable "x" habe, und Unit1 in die uses-Liste von Unit2 aufnehme, so ist "x" dort ebenso gültig. Die Folge ist, dass man z.B. in einer Funktion lokal "x" deklariert, und so lange man sich in dieser Funktion befindet, wird das lokale "x" genommen. Verwende ich das "x" aber an anderer Stelle und halte es aus Versehen für das eben genannte lokale "x", so wird mir der Compiler keinen Error ausspucken, sondern munter mit dem globalen "x" aus Unit1 kompilieren, und somit einen Fehler in der Logik herbeiführen, der dann u.U. nur schwer nachvollziehbar ist. Diese Problematik steigt und fällt natürlich mit der Komplexität eines Projektes, aber allein die Tatsache dass es eine selbst gebaute Fehlerquelle sein kann, disqualifiziert die globalen Variablen im Sinne einer sauberen Programmierung (imho). Ich muss jedoch zugeben, dass ich bei quick'n'dirty Mini-Mal-Eben-Programmen auch hier und da was global deklariere. Vornehmlich dann, wenn ich nur eine Unit brauche - z.B. um schnell was zu testen. Ansonsten vermeide ich sie wo es geht. Gruss, Fabian |
Re: Globale Variablen - warum in der DP so verpönt?
Zitat:
Globale Variablen kommen aus den 50er Jahren des letzten Jahrhunderts (Basic & Co). Da ging es wohl nicht anders. Dann kamen Unterprogramme mit eigenen Variablen. Dann noch das Unit Konzept mit diesen beiden Sorten an Variablen und zusätzlich noch Implementation/Interface-Unterscheidung (auch schon 20 Jahre her). Und jetzt muß man sich sogar noch mit protected, published usw. rumplagen. Warum ist das so ? Weil es nicht anders geht. :mrgreen: Alternative wären unüberschaubare, fehlerträchtige Programme. Deshalb die Frage nach deiner Programmgröße. Wenn ich an 1000 Stellen im Programm immer dasselbe
Delphi-Quellcode:
benutze und verändere, dann sage mir mal an welcher dieser 1000 Stellen das i irrtümlich falsch besetzt wird. Du wirst ewig brauchen, das zu finden, falls dies überhaupt gelingt.
var i : integer;
Guck dir mal in dem Zusammenhang noch GOTO an. Im Zusammenspiel mit globalen Variablen ist das dann echt nicht schlecht. 8) EDIT : Der letzte Satz ist natürlich ein Witz. Verwende bloß kein GOTO. Und dizzys Beitrag paßt auch gut zum Thema. Schön zu sehen, was bei dabei rauskommt: man kann es nicht mal vernünftig erklären. Ich habe zwar den Sinn verstanden, aber nur weil ich sowieso gewußt habe was er meint. :lol: @dizzy: ich meine damit ein Beispiel zu konstruieren. Sogar ein Beispiel in diesem Zusammenhang ist irreführend, egal wie mans anpackt. |
Re: Globale Variablen - warum in der DP so verpönt?
Zitat:
Edit: i: Integer (local); gi: Integer (global_integer); gi2: Integer (global_integer_#2); b: Boolean (local); gb: Boolean (global_boolean); gb2: Boolean (global_boolean_#2); Natürlich bin ich mir *absolut* sicher, daß man die obige Reihe keinesfalls fortsetzen kann, da sie keinerlei Systematik erkennen lässt!!! Man sieht sich wieder bei HartzIV!? |
Re: Globale Variablen - warum in der DP so verpönt?
Mal ne Frage @new4toms:
Wieso packst du diese ganzen globalen Variablen nicht einfach in den privaten Abschnitt deiner TForm1(?)-Klasse? |
Re: Globale Variablen - warum in der DP so verpönt?
Globale Variablen, die nicht fuer die ganze Lebenszeit der Unit gebraucht werden, machen unnoetige Probleme.
Das groesste Problem ist, das man die Variable zugreifen kann, obwohl sie eigentlcih ungueltig ist. Sprich man gibt die Fehlermeldung auf, die man sonst bekommen koennte. Was man sihc mit globalen Hilfsvariablen auch einfangen kann sind Probleme mit der Nebenlaeufigkeit. Eine Hilfsvariable kann durchaus von mehreren Instanzen einer Komponente zugegriffen werden und schwupps aendert die eine die Variable waehrend die andere auf die Werte vertraut. Bei der JVCL z. B. habe ich alle globalen Variablen (und als Variablen missbrauchte Konstanten) entfernt, die nicht wirklich global sind. Zusaetzlich wurden alle globalen Variablen (meist Listen) in der finalization nicht nur freigegeben sondern auch auf nil gesetzt. Das hat eine Menge merkwuerdiger Fehler beseitigt. |
Re: Globale Variablen - warum in der DP so verpönt?
Ich finde die Diskussion hier insofern etwas lustig, als das Delphi selbst globale Variablen kreiert.
Es geht natürlich Ohne. Es geht auch ohne Goto-Befehle. Es geht auch alles nur mit OOP. Das ist aber genauso hirnrissig und engstirnig, als zu behaupten, alles ginge mit ASM. Manchmal sind globale Variablen praktischer, weil sie eben Global sind. Wozu soll ich sie in eine Klasse schmeissen? Wenn ich aber recht drüber nachdenke, ist das reine Faulheit... :oops: Goto: Es gibt wirklich Anwendungsfälle, bei denen ein Goto einfach eleganter, weil schneller, ist. Allerdings nimmt die Anzahl der Argumente seit 'break' und 'continue' rapide ab. Aber mal im Ernst, sind die beiden Befehle nicht einfach nur GOTO's aber im hübscheren Gewand? OOP: Das ist schon eine feine Sache, aber für kleine Geschichten einfach überdimensioniert. Ich brech mir bei einem 100 Zeilen Teil doch nicht Einen ab und erzeuge erst eine Klasse... ---- Ich denke, es wird klar, woraum ich hinaus will: Man sollte seine Werkzeuge sorgfältig aussuchen und genau den Bedürfnissen entsprechend einsetzen: Wenn's die Performance verlangt, hüpfe ich in meinen Code mit GOTO's (ordendlich dokumentiert) durch die Gegend. OOP setze ich natürlich weitestgehend ein, aber auch nicht für jeden Furz. |
Re: Globale Variablen - warum in der DP so verpönt?
Ich finde, man sollte nicht alles gleich verurteilen.
Man kann GoTo's und globale variablen durchaus sinvoll verwenden, wenn ein GoTo sinvoller und einfacher zu verstehen als eine Schleife ist, warum nicht verwenden ? Man kann auch globale Variablen sinnvoll einsetzen, nur kann man den gleichen Effekt meist mit einer Klassenvariable erzielen, wobei hier eben die OOP-Lösung vorzuziehen ist. |
Re: Globale Variablen - warum in der DP so verpönt?
Ich habe nicht gesagt, man dürfe keine globalen Variablen benutzen. Es geht darum, sie weitestgehend zu vermeiden. Manchmal geht es eben nicht anders. Bsp.: Variable wird im ganzen Programm gebraucht. Diese kommt aber aus einer INI. Man kann also leider nicht mal eine Konstante verwenden.
Dann noch zu den GOTOs (wenn man hier einmal ein falsches Wort benutzt, schon kommen die Geier) :mrgreen: : das war nichts anderes als ein Zugeständnis in den 70ern an die Basic-Umsteiger. Wer die benutzt, obwohl er sie gar nicht benötigt, der ist entweder grenzenlos faul oder kann schlicht und einfach nicht programmieren, weil damit Delphi so ziemlich vollständig ausgehebelt werden kann. |
Re: Globale Variablen - warum in der DP so verpönt?
Zu den GOTOen (um mal noch eine Veranglizistisierungsverklausulierung vorzunehmen):
Lasst uns das folgende Gesetz im Bundestag einbringen: Zitat:
|
Re: Globale Variablen - warum in der DP so verpönt?
Natürlich haben globale Werte ihren Sinn:
Man denke nur an Pi, die Eulersche Zahl, die Konstante c (Lichtgeschwindigleit)... Okay, das sind alles Konstanten. Globale Variablen... ja. Auch: Zum Beispiel die Gravitationskraft an der aktuellen Position. Die muss einmalig berechnet werden (daher Variable), ist dann aber zumindest für die Programmlaufzeit über konstant. Aber schon das Beispiel ist sehr konstruiert, genauso konstruiert wie andere Anwendungsbeispiele mit global verwendeten Variablen. Die richtige Lösung? Ganz einfach: Ein Objekt, welches die 'globalen' Werte zur Verfügung stellt. Zu holen als Singleton über eine Object-Factory. Es bietet sich z.B. der Name Globals an. Alle Variablen die man wirklich überall braucht werden als Properties dieser Klasse deklariert und gut ist: Keine Namensverwirrung mehr, kein versehentlicher falscher Zugriff mehr. |
Re: Globale Variablen - warum in der DP so verpönt?
Der einzige Anwenugsfall von globalen Variablen, der mir gerade einfällt sind die besprochenen Singletons.
Da es in Delphi32 keine statischen Felder/Properties gibt muss man also eine Instanz in einer globalen Variable halten. Wobei diese natürlich im implementation-Teil deklariert wird und somit außerhalb der Unit dieser Klasse nicht zu sehen ist. Sonst sehe ich keinerlei Sinn und Zweck hinter globalen Variablen. Ich lösche sie auch aus den Formularen raus. Diese Formularvariablen zu benutzen wäre schließlich genauso unsauber, wie eigene globale Variablen überall hinzuschleppen... |
Re: Globale Variablen - warum in der DP so verpönt?
Mal eine (dumme) Frage:
Was versteht ihr genau unter globale Variable? Nur den im var im interface? Oder auch den private und pubic - Bereich des Formulars? Also ich benutzen den var-Teil des Interfaces absolut NIE, denn das blockiert ja dann alle gleichnamigen Elemente und sieht außerdem hässlich aus... |
Re: Globale Variablen - warum in der DP so verpönt?
Hallo,
was versteht ihr denn eigentlich unter globalen Variablen? Folgende Vorgehensweise: Es existieren vollständig gekapselte Eingabefenster ( mehr als 100). ( Machen wir so ) In den Fenstern werden alle Eingaben auf untere und obere Grenze und andere Dinge gecheckt. Es gibt für jedes Formular eine ( für die Daten ) Eingangsprozedur und eine Ausgangsprozedur. Das ist OOP in Reinkultur. Wir benutzen globale Variable als Zwischenspeicher um unsere Daten nachher über einen pre und post Prozess ( Umwandlung in Hex ode rzurück ) an die Unterstation zu senden oder die Informationen zu holen. Was ist daran unseriös? Blödsinnig ist natürlich diese globalen Variablen über sämtliche Units zu verteilen. Sie sind selbstverständlich in einer Unit konzentriert. Dieses Verfahren ist absolut übersichtlich. Wir können unseren Code auch nach 10 jahren noch lesen. Rainer |
Re: Globale Variablen - warum in der DP so verpönt?
Genau so siehts aus ! Es gibt wenige Ausnahmen. Aber das hier :
Zitat:
|
Re: Globale Variablen - warum in der DP so verpönt?
Zitat:
Demnach wären alle Variablen, die nicht Felder einer Klasse (oder eines Records :? ) bzw. lokale Variablen einer Methode sind, globale Variablen. ;) |
Re: Globale Variablen - warum in der DP so verpönt?
Verstehe es auch nicht, in manchen fällen sind Globale Variablen wichtig.
Z.b. habe ich eine Logunit( Erstellt Log Dateien ), diese musste ich als Globale Variable behandeln um von überall zugreifen zu können. Sonst braucht man sie nicht, und würden das Programm nur unübersichtlich machen! |
Re: Globale Variablen - warum in der DP so verpönt?
@SpeedMaster
Hier ist schon 2-mal das Wort Singleton gefallen. Das wäre eine Möglichkeit es zu lösen. Die andere wäre, nach außen die Funktionalität über class methods anzubieten und eine Singleton nur innerhalb der implmentation zu halten. (Denn ein normales Singleton kannst du zerstören!) |
Re: Globale Variablen - warum in der DP so verpönt?
Zitat:
|
Re: Globale Variablen - warum in der DP so verpönt?
Zitat:
|
Re: Globale Variablen - warum in der DP so verpönt?
jo Robert, klar ist Form1 eine globale Variable, aber das kann man wohl kaum ändern.
Ausserdem wäre damit sichergestellt, das man eben nur mit expliziter Angabe von Form1. auf die Variable zugreifen kann. (Ausserhalb der Klasse) |
Re: Globale Variablen - warum in der DP so verpönt?
Natürlich machen globale Variablen Sinn !
Wenn eine Variable "Unit-übergreifend" benötigt wird und an jeder Stelle des Programms zu jederzeit verfügbar sein soll - dann muss diese Variable einfach global sein. Und dann erreicht man mit irgendwelchem Spielkram wie dem hier : Zitat:
Objektorientierte Programmierung in allen Ehren, aber bitte dort, wo es auch wirklich Sinn macht und spürbare Vorteile bringt. Und normalerweise treten dann auch keine ... Zitat:
und unverwechelbare Bedeutung haben. Aber natürlich sollte man eben keine Laufvariablen oder irgendwelche Zählvariablen oder Ähnliches global definieren. |
Re: Globale Variablen - warum in der DP so verpönt?
Grundsätzlich ist es möglich ohne globale Variablen auszukommen. Delphi selbst benutzt zwar auch globale Variable, aber auch diese könnte man vermeiden.
Zum Beispiel ist bei der VCL-Programmierung das zuerst kreirte Form immer das MainForm. Dementsprechend könnte man nach oop, Form2, Form3 als Public in Form1 deklarieren (und schon wären diese Globalen Weg). Dann gäbe es noch Form1. Wenn Borland die Objectorientierung bei Delphi aber zu 100% umsetzen würde wäre Form1 vermutlich im Public von TAppplicaiton. Und die Globale "Application" würde auch nicht wirklich benötigt werden weil es auch so ginge
Delphi-Quellcode:
und beim Klick auf schließen könnte die Instanz von TApplication sich selbst zerstören
TApplication.Create;
Delphi-Quellcode:
Leider (oder für manche zum Glück) hat Borland das nicht so umgesetzt. Jedoch ist es auch mit den aktuell in Umlauf befindlichen Delphis möglich das alle Globalen einfach Public-Variablen vom Mainform sind.
procedure TApplication.CloseClick;
begin Self.Free; end; Zum Beispiel Pi etc.: Wer wirklich Objectorientiert arbeiten will kann auch solche Variablen ins Public des Mainforms packen. Ohne Frage ist dies alles aber auch ein riesen Aufwand und für kleinere (Mini-)Projekte overkill. Wie schon mehrfach in dem Thread erwähnt sollte man deshalb abwägen wann man was verwendet. Zur Ausgangsfrage: Keine(möglichst wenig) globalen Variablen weil: - Ich habe ein Programm in dem sich ein Button befindet. Wenn dieser Button jetzt einen Darstellungsfehler hat finde ich den Fehler bedeutend schneller wenn ich weiß das sich dieser irgendwo innerhalb von "TKomischerButton" befindet. Würden jetzt aber alle funktionen innerhalb des Buttons auf globale Funktionen/Variablen zugreifen so müsste ich befürchten das ich mit der Beseitigung des Bugs im Button, Bugs in anderen Komponenten verursachen welche mit der falschen Globalen Variablen/Funktion richtig gearbeitet haben. Auch Ableitungen von klassen sind nicht möglich/so einfach wenn ich keine Funktion überschreiben kann weil sie global ist... |
Re: Globale Variablen - warum in der DP so verpönt?
Zitat:
Nee, jetzt mal ehrlich: Pi ist eine Konstante, und die darf natürlich global in einer Unit deklariert sein. Ich packe alle Konstanten immer in entsprechende Units und wo ich die Konstanten brauche nehm ich die Unit zur Hand. Aber mir fällt ganz ehrlich kein einziges Beispiel ein, wo es korrekt wäre eine globale Variable herzunehmen. Und ich bin da schon eine ganze Weile am grübeln. Nichts was mir einfällt ist eine globale Variable. Die ganzen Werte haben irgendwie immer einen Zusammenhang und gehören von daher in ein Objekt. Zur Implementierung von Singletons: Ich lege solche Objekte immer in unitlokalen Variablen ab. Daher kann ich die auch im finalization-Teil aufräumen wenn das Programm beendet wird und notfalls sogar im initialization bereits erzeugen wenn sie immer da sein müssen. Im Normalfall werden die Objekte aber erst beim ersten Zugriff erzeugt. |
Re: Globale Variablen - warum in der DP so verpönt?
Ich weiß, pi war ein schlechtes Beispiel, ich meinte eigentlich den Fall mit der Gravitation (was hier in dem Thread irgendwo erwähnt war), nur wusste ich leider nicht wie man das schreibt und habs auch nicht mehr gefunden. Aber: Pi ist zwar eine konstante aber wenn man wöllte könnte man diese Trotzdem im MainForm oder in "TConstants" deklarieren und dort im Create staatich zuweisen. (wobei ich bei Konstanten die Globalisierung noch einsehe)
|
Re: Globale Variablen - warum in der DP so verpönt?
Der weitgehende Verzicht auf globale Variablen alleine erhöht kaum die Qualität eines Programms. Die Eliminierung von globalen Variablen, die gar keine sind, ist das Ziel - getreu dem Grundsatz des information hiding. Wer dabei über das Ziel hinaus schießt, der liegt auch daneben. Gäbe es keine globalen Variablen, dann müsste man sie erfinden.
Wer mit Delphi qualitativ hochwertige Programme erstellen will, der kommt um das Studium einschlägiger Fachliteratur nicht herum. Alleine das Kapitel "Sichtbarkeit von Variablen in prozeduralen Sprachen mit Blockkonzept" - dazu zählen alle Pascal Dialekte, aber auch Ada - verschafft wertvolles Grundlagenwissen und erübrigt manchen unfreiwillig komischen Beitrag - was aber manchmal auch wieder schade wäre. Keiner muss sich einem Hochschulstudium der Informatik unterziehen, nicht einmal ein FH-Studium ist notwendig, um vernünftige Programme zu schreiben. Wer aber - als Gegner oder Befürworter von globalen Variablen - auch nach etlicher Zeit glaubt Maximal-Forderungen durchsetzen zu können, der braucht dringend Hilfe. Grüße vom marabu |
Re: Globale Variablen - warum in der DP so verpönt?
Was DU als 'Unit Globals' implementiert hast, ist ja nichts anderes als ein Datenmodul. Nur eben als Unit. Die ganze Diskussion pro/contra OOP ist sowieso irgendwann überflüssig, weil ja OOP nichts anderes als eine andere Sichtweise ein und derselben Geschichte ist.
Ob ich nun eine Methode "foo.bar (huhu)" habe, oder eine Prozedur "foo (bar, huu)" ist ein und das Selbe. Aber mit OOP (und dieser Verberbungsgeschichte) bekomme ich Struktur in meine Anwendung und werde gezwungen, semantisch zusammenhängende Abläufe und die Elementaroperationen auf den Daten auch in eine Unit/Klasse zu schreiben. So gesehen, ist C das Grauen, Pascal mit dem Unit-Konzept schon besser, Modula noch ein wenig restriktiver, Delphi schon ganz brauchbar, und C#/Java total OOP-lastig. Wie weit man sich an C (C steht für Chaos, he he) oder Java gebunden fühlt, ist eine Glaubensfrage. Ich persönlich finde, dsa Delphi einen gesunden Mittelweg beschreitet, weil es den Spagat von Chaos zu OOP schafft, und mir trotzdem meine Freiräume lässt. Alles eine Frage des Glaubens. Was man aber unabhängig von seinem Glauben machen sollte, ist anständigen, rechtschaffenen (ja ja und vaterlandsliebenden, regierungstreuen, chrr..chrr..) Code zu schreiben, der jedem Review standhält. Wenn man so diszipliniert ist, bekommt man auch ASM-Code mit globalen Variablen so hin, das er noch nach 10 Jahren lesbar ist. Alles eine Frage des Könnens. Na denn. Nobody is perfect. @Marabu: Dein Beitrag kam gerade eben, aber trifft ins Schwarze! |
Re: Globale Variablen - warum in der DP so verpönt?
In einer meiner Anwendungen wird zur Startzeit eine Pfad-Angabe aus einer INI eingelesen, die dann zur kompletten Laufzeit immer wieder für Datenbankverbindung verwendet wird.
Und jetzt hätte ich gerne ein gutes Argument, warum ich das nich mit ner globalen Variable machen soll :mrgreen: |
Re: Globale Variablen - warum in der DP so verpönt?
Hi,
bei mir kommen die Einstellungen, die ich aus den INIs les, in ne eigene Klasse, welche die Variablen hält. Die Klasse kümmert sich auch ums speichern, laden usw. Auf ein solches Objekt und dessen Eigenschaften kann ich auch von überall zugreifen :) Aber wie hier nun schon x-mal erwähnt: kommt auf den Einzelfall an. Gruß Stephan :dance: |
Re: Globale Variablen - warum in der DP so verpönt?
Joa....
Hab nämlich irgendwie keine Lust für gerade mal 2 Nur-Lesen Variablen auch noch Klasse anzulegen ... Die Variablen werden wärend der Laufzeit noch nichmal geändert -g- |
Re: Globale Variablen - warum in der DP so verpönt?
Zitat:
Ausserdem koennte deine Klasse das Laden und Speichern uebernehmen ;) Fuer mich ist sowas Geschmacksache, ich habe in den letzten Wochen angefangen, alles in Klassen zu verpacken ;) Greetz alcaeus |
Re: Globale Variablen - warum in der DP so verpönt?
Zitat:
:?: Man wird doch wohl als auch nur halbwegs erfahrener Programmierer kontrollieren können, WANN man WO WELCHE Werte hinschreibt. Aber jetzt deswegen eine eigene Klasse / Objekt zu definieren, nur weil man befürchtet, man könne irgendwann versehentlich mal eine Varibale überklatschen ... das ist schon wirklich eine etwas merkwürdige Vorgehensweise. Zitat:
<myinifile>.WriteString / <myinifile>.WriteInteger liegen ? |
Re: Globale Variablen - warum in der DP so verpönt?
Zitat:
|
Re: Globale Variablen - warum in der DP so verpönt?
Hast du schon mal ein Projekt mit mehreren Entwicklern gemacht?
Versehentliches Ueberschreiben kommt auch vor wenn man eine Hilfsvariable fuer eine Komponente global anlegt und dann nur mit einer Instanz der Komponente testet. Der gleichzeitige Zugriff bleibt dann ungetestet. Dies ist ein haeufiger Fehler, der auch dir passieren kann. Du zeigst mit deinen Formulierungen nicht deine Befaehigugung sondern deine Unerfahrenheit. |
Re: Globale Variablen - warum in der DP so verpönt?
Globale Variablen nicht zu verwenden ist IMHO großer Schwachsinn, wie willst du den sonst z.b. dass Sinnvolle Arbeiten mit Log Dateien realisieren??
Und zum Thema Werte überschreiben: Wenn Werte überschrieben werden zeugt das nur davon das das Projekt nicht durchdacht ist, und kein Standart da ist. Ich z.b. gebe wenn ich eine Globale Variable benutze, ihr immer den Namen der Klasse minus das "T". Wenn das Programm richtig Strukturiert ist braucht man Klassen nur einmal Global, sonst eben Lokal in einer Klasse, wobei man dort eventuelle Probleme einfach lößen kann indem man z.b. ein "v" vor jede Variable setzt die nur in dieser Klasse benutz wird! |
Re: Globale Variablen - warum in der DP so verpönt?
Zitat:
Wie gesagt - OOP in allen Ehren, es geht gar nicht OHNE, aber man muss solche Konzepte nun auch nicht auf Krampf irgendwo rein drängen, wo man damit eigentlich gar nichts damit vereinfacht und wo man damit auch nirgendswo die Pflegbarkeit / Lesbarkeit / Qualität des Quelltextes erhöht. |
Re: Globale Variablen - warum in der DP so verpönt?
Zitat:
Wie "qualitativ hochwertig" und leicht pflegbar ein Quelltext ist - das hängt viel mehr von der allgemeinen Anwendungsarchitektur ab und vor allem auch davon , ob und welche Programmier-Standards- und Richtlinien man vorher festgelegt hat. |
Re: Globale Variablen - warum in der DP so verpönt?
Zitat:
|
Re: Globale Variablen - warum in der DP so verpönt?
Jetzt konnte ich' doch nicht lassen... :?
Zitat:
Zitat:
Wenn du in einer klasse eine Property mit einer bestimmten anderen Klasse haben willst ist es nunmal am hübschesten Property und Klasse gleich zu benennen. Da das gegen das Eindeutigkeitsprinzip von Delphi verstößt fügt man dem Typen ein T vorweg. (Es waren wohl Felder von Records und nicht Klassen und Properties, damas vor 200 Jahren, aber die Idee ist die geliche ;) ) Die Properties heißen heißen also wie der Typ ohne das T. Keine Ahnung wo dein Standard herkommt, es ist ganz sicher kein Standard für andere Delphi-Entwickler! Warum das v als Prefix sinnlos und alles andere als standardkonform ist, brauche ich wohl nicht erwähnen, oder? Zitat:
Damit kann man nämlich prima Dinge wiederverwenden ohne sie immer wieder neuerfinden zu müssen. Ich hättte keinen Bock überall den Zustand dieser Variable zu prüfen. Ich müsste es aber machen, da Ich in gewisser Weise defensiv, und somit fehlervorbeugend, programmieren muss. @Delphi Fanatic Meine Packages werden auch von anderen benutzt so wie ich Packages anderer benutze. ( Das traf zumindest auf meine berufliche Win32-Zeit zu, .Net kennt ja zum Glück keine globalen Variablen und lose Funktionen mehr :zwinker: ) Wo kommt man denn hin, wenn Entwickler A einfach so eine globale Variable einführt, weil er zu faul oder zu unfähig ist um es richtig zu machen, auf die ICH nun überall achten muss, weil es eben keinen Kompilierfehler/Laufzeit fehler gibt, wenn ich in einer dummen Situation darauf zugreife. Die von dir als Spielkram bezeichnete Factory kann nämlich auch verwendet werden um eine Exception in einer dummen Situation auszulösen. Dann merke ich sofort, dass ich da Käse fabriziert habe. ;) Der Spielkram kann auch automatisch, beim ersten Zugriff, im Hintergrund die INI laden. Der Spielkram könnte problemlos angepasst werden um ein Neuladen zu bewirken, wenn die Datei in der zwischenzeit geändert wurde. Der Spielkram versteckt das INI-File vor dem Rest der Applikation, auf die Art könntest du das altmodische INI-File problemlos gegen zm Bsp. eine XML Datei austauschen. OHNE dass sich für den Rest der Applikation auch nur irgendwas ändert. Der Spielkram könnte auch eine Interface instanz zurückliefern (was er wahrscheinlich sowieso machen würde ;) ), diese kann man auch nicht so einfach zerstören. Das waren jetzt nur ein paar Argumente, die einfach aufzeigen sollen, dass sich Faulheit beim Programmieren nicht auszahlt. Was du einmal an ein paar Codezeilen und etwas Designzeit "verschwendest" bekommst du zig-fach zurück, da du eben keinen statischen, fehlerträchtigen und alles mit Bezeichnern überflutentenden "Diät"-Code produzierst. Viele Klassen oder deren Vorgänger wirst du nämlich auch in anderen Projekten wiederverwenden können. Oder innerhalb des gleichen, nur an anderer Stelle. Modularität ist eine prima Sache, funktioniert aber nur wenn die Logik eines Moduls innerhalb des Moduls bleibt. ;) |
Re: Globale Variablen - warum in der DP so verpönt?
Zitat:
Hat schliesslich nicht mit irgendeiner Art des Stehens zu tun. @Thema: Ich kann mich da nur Robert anschliessen :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz