WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

globale Variablen "No-Go" oder nur nicht ideal?

 

Manuel56

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.02.2015, 00:08     Titel: globale Variablen "No-Go" oder nur nicht ideal?
  Antworten mit Zitat      
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

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 02.02.2015, 09:42     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.02.2015, 12:43     Titel: Re: globale Variablen "No-Go" oder nur nicht ideal
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 02.02.2015, 14:40     Titel:
  Antworten mit Zitat      
"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
Code:
global struct_projektname_funktionalitat={'text', 1234}

_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.02.2015, 14:51     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.