naja, ob das jetzt standardmäßig ist, oder nicht ist ja egal. Hauptsache by reference, oder?
Sorry: War nicht so gemeint. Ich hab das dann selbst nochmal ausprobiert und
mir war gar nicht mehr präsent, dass die Variablen defaultmässig by reference übergeben werden.
Es kann schon echt nerven, wenn jemand Dinge in etwas hineininterpretiert und einen dann über Sachen belehrt, die man eh schon weiss.
@Mathias: Für eine konsistente Strategie des Austausches von Error-State-Variablen ist das sicher ok mit by Reference. Ansonsten hast du wie bei starker Nutzung von by Reference ein Variablen-Scope Problem.
Variablen-Scope ist die Sichtbarkeit der Variable. Wenn du das Beschreiben von by reference übergebenen Variablen zur gängigen Coding-Praxis machst, wird es unübersichtlich.
Global Variablen werden zumindestens immer an einer dafür vorgesehenen Stelle explizit aufgelistet.
Wenn mehrere Programme/Funktionen innerhalb eines Programmes auf 1 gemeinsame Ressource (z.B. Variable) zugreifen, steht man immer vor dem Problem, den Zugriff zu ordnen.
Vermutlich hat wg. dieser Probleme Shared Mail in Lotus Notes nie funktioniert oder in .NET sollen wohl alle Ressourcen innerhalb der Anwendung beschrieben und wohl auch getan werden. Nix mehr Registry.
Letztendlich hat das alles glaub ich eine sehr gleiche gemeinsame Ursache.
Wenn ein Programm einen Win-Registry-Eintrag macht, geht es davon aus, dass kein anderes Programm mehr diesen Registry Eintrag überschreibt.
Wenn du in der main-Funktion eine andere Funktion aufrufst und nach der Rückgabe davon ausgehst, dass die andere Funktion eine bestimmte Variable geändert hat, ist das sogar noch gefährlicher.
So ungefähr jedenfalls.
Das und vieles mehr wird übersichtlicher und klarer als ich das je könnte in dem Buch "Code Complete" von Steve McConell beschrieben. Obwohl die meisten Beispiele in Pascal sind, ist es gut lesbar. Das Thema hier z.B. S. 216 ff.
Ich kann auch Java Programmierer nicht ernst nehmen, die sich an die dort aufgeführten Gesetze nicht halten. Beliebtes Thema ist z.B. Verzicht auf Kommentierung.
-> Warum programmierst du eine Objektorientierte Sprache?
<- Das ist übersichtlicher und man kann besser ändern, erweitern und wiederverwenden.
-> Und warum setzt du keine Kommentarzeilen?
<- Keine Zeit...
Suppä.
Gruß Axel