|
|
globale Variablen "No-Go" oder nur nicht ideal? |
|
Manuel56 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.02.2015, 00:08
Titel: globale Variablen "No-Go" oder nur nicht ideal?
|
 |
|
 |
|
Hallo,
Ich habe mich in letzter Zeit etwas in MatLab eingearbeitet um in der Uni dann schon etwas Wissen zu haben.
Hab in den letzten Wochen an einem Programm gearbeitet, welches mir Daten vom seriellen Port Visualisiert, Filtert, Filmt usw..
Natürlich hab ich viel mit google gearbeitet ,weil ich mein Programm eher ergebnisorientiert machen wollte.
Darum bin ich in den wirklichen "Basics" noch nicht sehr fit.
Dazu eine Frage:
Mein Programm benützt ca. 10 globale Variablen,wobei ich gelesen habe dass man diese vermeiden sollte.
Natürlich habe ich auch Funktionen mit Eingang und Ausgang benützt und nicht alles mit globale Variablen realisiert also z.B ergebnis=function(a1,a2,a3);
Soll ich alle globalen Variablen noch umgehen und mit z.B "setappdata" usw arbeiten oder sind diese nicht ideal aber akzeptabel?
Das Programm funktioniert und ist auch nur für zu Hause, aber ich hab jetzt soviel Arbeit reingesteckt und möchte nicht was komplett falsches gemacht haben..
Kann mich über das jemand aufklären?
Ich hab nur gelesen "nicht ideal"/"vermeiden",.. aber nichts konkretes.
Vielen Dank!!
|
|
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 02.02.2015, 09:42
Titel:
|
 |
|
 |
|
globale variablen haben halt den nachteil das wenn du irgendwann teile deines programms für etwas anderes benutzt du dann aufpassen musst das diese funktionen nicht auch zufällig für etwas anderes den selben variablen namen benutzen. darum macht man das nicht. es erschwert später die einfache weiterverwendung. ob du den aufwand betreiben willst diese variablen zu entfernen ist deine sache. falls du irgendwann noch weiter mit den sachen arbeiten willst würde ich es empfehlen aber das bleibt ja dir überlassen.
Zitat: |
However, global variables carry notable risks. For example:
Any function can access and update a global variable. Other functions that use the variable might return unexpected results.
If you unintentionally give a "new" global variable the same name as an existing global variable, one function can overwrite the values expected by another. This error is difficult to diagnose.
Use global variables sparingly, if at all. |
grüße
_________________
richtig Fragen
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 02.02.2015, 12:43
Titel: Re: globale Variablen "No-Go" oder nur nicht ideal
|
 |
|
 |
|
Hallo Manuel56,
Wenn man ein Programm mit 100 Zeilen hat und nur dieses eine verwendet und nicht noch andere GUIs gleichzeitig öffnet, bekommt man mit globalen Variablen keine Probleme.
Wenn die Programme aber größer werden oder man irgendwann mal andere GUIs gleichzeitig öffnen möchte, die ebenfalls globale Variablen benutzen, bekommt man sehr schnell das totale Chaos. Das schlimmste dabei ist, dass man nicht mehr so einfach nachvollziehen kann, woher Veränderungen einer Variablen stammen.
Es lohnt sich deshalb gleich zu Beginn des Programmierens grundsätzlich auf globals zu verzichten, damit man sich gleich einen sauberen Programmierstil angewöhnt. Denn erfahrungsgemäß fangen die Leute mit einem kleinen Programm in einem Praktikum an, erweitern es dann für eine Hausarbeit, brezeln es für die Diplomarbeit auf und machen dann ein Projekt darauf für die Doktorarbeit. Und wenn einem dann in einem 100'000 Zeilen-Programm die globals um die Ohren fliegen, löscht man am besten den gesamten Code und beginnt sauber von vorne.
Gruß, Jan
|
|
|
Andy386 |

Forum-Guru
|
 |
Beiträge: 485
|
 |
|
 |
Anmeldedatum: 24.06.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.1/8
|
 |
|
|
 |
|
Verfasst am: 02.02.2015, 14:40
Titel:
|
 |
"komlplett falsch" kann man nicht sagen, "konkretes" könnte ich aus der Beschreibung (wieviele Zeilen Code? wie viele Funktionen? ...) nicht ableiten, aber 10 klingt schon nach ner ganzen Menge...
Ich beruhige mein Gewissen damit, dass ich sehr lange Globalnamen nutze und ggf. auch mal ein Struct
_________________
Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 02.02.2015, 14:51
Titel:
|
 |
Hallo,
ich sehe auch keinen unmittelbaren Handlungsbedarf. Wenn dieses Projekt für sich steht und soweit abgeschlossen ist, wäre es höchstens zu Übungszwecken interessant zu sehen, wie man ohne globale Variablen auskommt. Bei graphischen Benutzeroberflächen geht das z.B. wie von dir schon erkannt schön mit setappdata / getappdata.
Für weitere Projekte würde ich raten, von Anfang an auf globale Variablen zu verzichten.
Grüße,
Harald
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|