Variablen - Global oder nicht global!?

Gast #488064
Lesenswert?
• ▲
▼
Hallo zusammen,
hab mal ne allgemeine Fragen: Ein paar Kollegen vo mir deklarieren Ihre 
Variablen in ihren C-Programmen (Keil und PIC) immer global in einer 
Datei (z.B. Variablen.h) - ich dagegen mache die Variablen die ich in 
meinen Progs benütze lieber immer nur in der entsprechende klasse 
bekannt (so wie ich es eigentlich auch gelernt habe).
Nun kam der Einwand dass das unübersichtlicher ist als alles zusammen zu 
deklarieren, und wenn man alle Variablen sowieso in der gleichen Datei 
deklariert, ist das eh egal ob global oder nicht . daher meine Frage - 
wie macht Ihr das in Euren C-Programmen - deklariert Ihr auch alles 
global oder noch schön klassisch indem Ihr die Variablen nur in den 
Klassen bekannt gebt, in dennen Ihr sie auch braucht?

So langsam habe ich das gefühl dass ich der einzigste bin, der das noch 
macht, deswegen dachte ich, ich muss mal nachfragen wie das die 
Allgemeinheit hält!

Danke und GRuß
Gast #488083
Lesenswert?
• ▲
▼
1.: In C gibt es keine Klassen...
2.: Ich persönlich verwende globale Variablen bei der 
Embedded-Programmierung eigentlich nur dann, wenn es mit lokalen 
Variablen kein Weiterkommen gibt, also z.B. zum Datenaustausch mit 
Interrupt-Handlern, die ja nunmal keine Werte zurückgeben können. 
Globale Variablen blockieren statisch Speicherplatz, der gerade bei 
Embedded-Systemen wertvoll ist und demzufolge nicht unnötig verplempert 
werden sollte. Variablen deklariere ich grundsätzlich mit dem 
kleinstmöglichen Gültigkeitsbereich.
Gast #488086
Lesenswert?
• ▲
▼
@mark

>hab mal ne allgemeine Fragen: Ein paar Kollegen vo mir deklarieren Ihre
>Variablen in ihren C-Programmen (Keil und PIC) immer global in einer
>Datei (z.B. Variablen.h) - ich dagegen mache die Variablen die ich in

Sind sicher ältere Kollegen . . .;-)

>meinen Progs benütze lieber immer nur in der entsprechende klasse
>bekannt (so wie ich es eigentlich auch gelernt habe).

>Nun kam der Einwand dass das unübersichtlicher ist als alles zusammen zu
>deklarieren, und wenn man alle Variablen sowieso in der gleichen Datei

Quark. Genau anders herum wird ein Schuh draus! Möglichst wenige globale 
Variablen benutzen!

Denn die meisten Variablen werden nur lokal von den Funktionen benutzt 
(Schleifenzähler, Zwischenpsiecher etc.). Wenn amnnur globale Variablen 
nutzt, ist ratz-Fatz der Überblick hin und der globale Namensraum 
verdreckt.

>So langsam habe ich das gefühl dass ich der einzigste bin, der das noch
>macht, deswegen dachte ich, ich muss mal nachfragen wie das die

FALSCH! Du bist der einzige, der es nach neuer, besserer Art richtig 
macht. Stichwort Kapselung, Modularisierung!

MFG
Falk
Gast #488087
Lesenswert?
• ▲
▼
Wenn das ganze Programm sowieso auf eine Seite (und damit in eine 
Datei)passt, dann packe ich die Variablen auch gleich mit rein.

Aber ansonsten schön nach Modulen, mit (hoffentlich) sauberen 
Schnittstellen, in der entsprechende Header-Datei. Und nur, wenn es gar 
nicht ohne globale Variablen geht, die main zugeordnet sind, nehme ich 
ausnahmsweise sowas wie globals.h. Normalerweise braucht man sowas nur, 
wenn die Module nicht sauber getrennt sind.

Ist aber nur meine persönliche Meinung. Das (semi-)professionelle 
Programmieren im Uni-Umfeld habe ich schon lange hinter mir, aber selbst 
bei meinen kleinen Hobby-Spielereien rächt sich jede unsaubere 
Schnittstelle zwischen den Modulen früher oder später.

Oliver
(P.S. Das gilt natürlich alles nur für C. In C++ sollte sich die Frage 
gar nicht stellen, und in Basic programmiert man einfach nicht...)

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.