Zitat von
IngoD7:
Vorab:
Der Fragesteller fängt - wie es aussieht - doch gerade erst an mit Delphi und
OOP; und da würde ich ihm niemals anraten wollen,
krampfhaft auf globale Variablen zu verzichten. Für einen Anfänger ist das nämlich ein Krampf (Datenmodule, eigene Klassen, etc.).
Denke ich eher nicht. Gerade Anfänger haben ganz andere Probleme als Forms und DataModules.
Und der krampfhafte Teil kann für den Anfänger eine ganz gute Lehrstunde sein wann es sich denn wirklich lohnt den Weg zu gehen und wann nicht. Wieviel Aufwand es anfangs, einmalig, macht, und wie viel man sich später beim Arbeiten am Projekt spart.
Er kann dann einfach besser einschätzen. ob es sich lohnt einen Notepad-clone hinzuschludern, oder es "richtig" zumachen.
Zitat:
Deshalb schrieb ich ja auch von meinem fehlenden Verständnis für eine Notwendigkeit, auf globale Variablen zu verzichten. Es gibt diese absolute Notwendigkeit nicht.
Regel 1 im Umgang mit Zealots gewisser programmierrelevanter Herangehensweisen: Erwähne nie "notwendig", sonst bekommst du die klassische Antwort: "Was ist denn schon notwendig?
ASM? Nö, kannst dir ja auch einen Hex Editor nehmen und dort deine Echsen schreiben".
Zitat:
Dein "Au weia" kannst du dir sparen, es sei denn, du kannst beweisen, die alleinige Weisheit gepachtet zu haben.
Hab' die Urkunde hier irgendwo im Schreibtisch vergraben. Ist aber nicht gepachtet sondern gekauft.
Zitat:
Wieso ist ständig von mehreren Instanzen die Rede??? Dass das alles fein geht, bestreitet doch niemand. Aber wer von mehreren Instanzen spricht, denkt eh nicht mehr an globale Variablen, oder?
Weil Dinge selten schwarz oder weiß sind. Wenn man sich fragt
was diese Daten darstellen und wie sie benutzt werden kommen sicherlich unterschiedliche Klassen heraus, die für unterschiedliche andere Stellen im Code interessant sind.
Wichtig ist halt immer, dass Code nur das sieht was er muss und auch nur abhängig ist von Dingen, von denen er abhängig sein muss.
Code, der globale variablen oder Singletons[1] nutzt kann man nicht mal eben erweitern um gewissen Aufgaben parallel (read: multithreaded) zu erledigen. Das war der Teil zu Skalierbarkeit.
Die Frage der Wiederverwendbarkeit stellt sich bei Singletons/globalen variablen wahrscheinlich gar nicht erst.
Zitat:
Ich möchte den sehen, der angefangen ist zu programmieren, ohne globale Variablen benutzt zu haben.
Ich auch und ich wünsche TankWart auch viel Spass mit Delphi, egal welchen Weg er einschlägt.
Nur
IMHO muss man sich mit Hansa'schen "passt schon"-Tipps gerade bei Anfängern etwas vorsehen.
[1]die können thread safe gemacht werden, aber die nötigen Sperren fressen dir irgendwann die CPU weg.