' schrieb:man sollte lokale Variablen nur dann verwenden, wenn man Controls auslesen / aktualisieren möchte, z.B. ein Control auf einen bestimmten Wert initialisieren, oder einen Indicator (schnell und schnutzig) auf einen bestimmten Wert einstellen, wenn der Datenfluss "zu viel Arbeit" machen würde ... etc
So sehe ich das auch, aber manche hier in diesem Forum schütten das Kind mit dam Bade aus und vertreten die Meinung, daß man lokale Variablen grundsätzlich nicht verwenden sollte. Das Absurdeste war, daß jemand lokale Variablen gleichsetzte mit dem goto- Befehl in einer ansonsten strukturierten Umgebung und dafür die Zustimmung von anderen bekam. Aus dieser Diskussion habe ich mich ganz still fortgeschlichen.
Was man nicht tun sollte: In der zeitkritischen Hauptschleife große Array/Clusterstruktueren mit lokalen Variablen bedienen. (Man achte z.B. darauf, daß die laufende Aktualisierung eines Wertes in der Hauptschleife direkt geschieht, und nur die Initialisierung über eine lokale Variable, und nicht umgekehrt)
' schrieb:So sehe ich das auch, aber manche hier in diesem Forum schütten das Kind mit dam Bade aus und vertreten die Meinung, daß man lokale Variablen grundsätzlich nicht verwenden sollte. Das Absurdeste war, daß jemand lokale Variablen gleichsetzte mit dem goto- Befehl in einer ansonsten strukturierten Umgebung und dafür die Zustimmung von anderen bekam. Aus dieser Diskussion habe ich mich ganz still fortgeschlichen.
ich seh erst jetzt dass du darauf nochmal geantwortet hast
joh, die ofizielle Meinung "locals sind BÖÖÖÖHHHHSEE" wird ja auch von mir forciert und unterstützt, weil viele Anfänger - gerade wenn sie von text-orientierten Programmiersprachen zu LV kommen - viel zu viele lokale Variablen einsetzen. Es ist wie im richtigen Leben: die Menge macht's bzw. die Art und Weise wie locals eingesetzt werden.
Angenommen ich möchte einen Dialog programmieren, in dem ich irgendwelche Werte verändern kann. Diese Werte sollen beim aufpoppen des Dialogs bereits in den Eingabefeldern stehen, dann hab ich nur 2 Möglichkeiten: Entweder ich verwende locals oder - falls ich noch Properties setzen muss (z.B. disabled oder so ...) - dann eben die Value Eigenschaft der Property node. Hier sind locals angebracht und richtig eingesetzt.
Eine lokale Variable in eine State-Machine die ich verwende um ein Conrol zu setzen, weil ich vergessen hab das als Schiebe-Register anzulegen ist IMHO akzeptabel.
Lokale Variablen die z.B. zum Datenaustausch zwischen zwei parallelen While-Loops dienen sind in meinen Augen schlicht ein Programmierfehler, genauso wie locals mit denen State-Machines angesteuert werden, etc ... was man halt alles so sieht wenn man fremden Code angucken muss ...
' schrieb:ich seh erst jetzt dass du darauf nochmal geantwortet hast
joh, die ofizielle Meinung "locals sind BÖÖÖÖHHHHSEE" wird ja auch von mir forciert und unterstützt, weil viele Anfänger - gerade wenn sie von text-orientierten Programmiersprachen zu LV kommen - viel zu viele lokale Variablen einsetzen. Es ist wie im richtigen Leben: die Menge macht's bzw. die Art und Weise wie locals eingesetzt werden.
Dem kann ich als relative frischer Umsteiger zustimmen, man muss sich erst an die Geänderten Gegebenheiten der "grafischen" Programmierung gewöhnen. In einfachen textbasierten Programmen werden auch schon zuviele "Variablen" benutzt und weniger Referenzen übergeben. Wer dieses Programmierkonzept auf LabVIEW überträgt hat anfangs einfach den Drang alles in Lokalen Variablen zu Lösen.
' schrieb:Angenommen ich möchte einen Dialog programmieren, in dem ich irgendwelche Werte verändern kann. Diese Werte sollen beim aufpoppen des Dialogs bereits in den Eingabefeldern stehen, dann hab ich nur 2 Möglichkeiten: Entweder ich verwende locals oder - falls ich noch Properties setzen muss (z.B. disabled oder so ...) - dann eben die Value Eigenschaft der Property node. Hier sind locals angebracht und richtig eingesetzt.
Eine lokale Variable in eine State-Machine die ich verwende um ein Conrol zu setzen, weil ich vergessen hab das als Schiebe-Register anzulegen ist IMHO akzeptabel.
Lokale Variablen die z.B. zum Datenaustausch zwischen zwei parallelen While-Loops dienen sind in meinen Augen schlicht ein Programmierfehler, genauso wie locals mit denen State-Machines angesteuert werden, etc ... was man halt alles so sieht wenn man fremden Code angucken muss ...
Wenn man nun noch den Fehler macht und vergisst sich über das Timing gedanken zu machen hat man als Anfänger auch schnell das große Fragezeichen im Gesicht. Angenommen ich lese in einer Schleife Messwerte und Schreibe diese in eine lokale Variable und lese mit einer zweiten nicht getimten Schleife diese lokale Variable aus kann ich womöglich Messwerte verpassen... Das mit dem Timing und lokalenen Variablen kommt denke ich auch von dem Denken in seriellen Programmen und nicht in parallelen Abläufen (Wobei bis 8.2.1 das Wort parallel nicht gerade wörtlich zu nehmen ist
).
Es gibt nicht umsonst in LabVIEW lokale Variablen, diese haben schließlich auch Ihre Berechtigung. Allerdings sollte für Anfänger generell gelten löse erst alles in anderen methoden und wenn es gar nicht mehr geht dann löse es mit einer lokalen Variable