Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: Java ::  Globale Variablen     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
snOOfy
Mitglied

Benutzerprofil
Anmeldungsdatum: 09.11.2003
Beiträge: 1097
Beitrag snOOfy Mitglied 13:29:49 20.04.2012   Titel:   Globale Variablen            Zitieren

Ich brauche in meinem Projekt in verschiedenen Klassen einen Zufallszahlengenerator. Das habe ich bisher so gelöst, dass ich in jeder betroffenen Klasse einen
Java:
private static Random generator;

definiert habe. Nun dachte ich mir, es währe doch vielleicht besser, einen globalen Generator für alle Klassen zu benutzen. Das gleiche Problem habe ich mit dem
Java:
private static DecimalFormat df;

in mehreren Klassen. Wenn man an dem Format was ändern will, muss man es immer gleich in mehreren Klassen ändern. Mit wurde aber von einer Lösung wie
Java:
public class Global {
public static Random generator;
public static DecimalFormat df;
}

abgeraten, unter anderem wegen
Zitat:
Be careful when doing this - when the Global class gets unloaded the variables will be undefined null. If you sell your app this will happen sooner or later and you keep looking for error everywhere but not there.


Wie löst ihr sowas?

_________________
http://me-lrt.de
Wo...
Unregistrierter




Beitrag Wo... Unregistrierter 14:52:41 20.04.2012   Titel:   ... hast ...            Zitieren

... du denn das her???

und warum sollte die Klasse nicht geladen werden... das hab ich noch nie gehört!
snOOfy
Mitglied

Benutzerprofil
Anmeldungsdatum: 09.11.2003
Beiträge: 1097
Beitrag snOOfy Mitglied 14:54:57 20.04.2012   Titel:              Zitieren

http://stackoverflow.com/ ....... /global-variables-in-java

Das Argument habe ich auch nicht verstanden, aber in der zweiten Antwort wird auch davon abgeraten (ohne Begründung)...

_________________
http://me-lrt.de
Gregor
Moderator

Benutzerprofil
Anmeldungsdatum: 16.01.2002
Beiträge: 7762
Beitrag Gregor Moderator 15:20:49 20.04.2012   Titel:              Zitieren

snOOfy schrieb:

Das Argument habe ich auch nicht verstanden, aber in der zweiten Antwort wird auch davon abgeraten (ohne Begründung)...

Da hat wohl irgendjemand einen ganz obskuren Fehler gekriegt und warnt deshalb jetzt vor der Fehlerquelle, die er fuer sich ausgemacht hat.

Ich sehe kein ernsthaftes Problem darin, das so zu machen, wie Du es vorhast. Alternativ kannst Du das natuerlich auch alles in ein Singleton stecken. Ist eine Frage des persoenlichen Geschmacks. Generell wuerde ich Dir aber raten, nicht allzuviel global zu machen. Ich weiss nicht, wie Du debuggst, aber ich versuche immer, den Fehler moeglichst stark im Code zu lokalisieren. Wenn Du viele globale Abhaengigkeiten hast, ist das schwerer. Globale Variablen koennten zum Beispiel irgendwo ploetzlich den falschen Wert haben, weil sie an einer ganz anderen Stelle im Code geaendert wurden. Wenn so etwas dann auch noch nebenlaeufig in mehreren Threads ablaeuft, hast Du grosse Probleme, die Ursache des Fehlers zu finden.

_________________
"The problem with quotes on the Internet is that it is hard to verify their authenticity" - Abraham Lincoln
Jockelx
Mitglied

Benutzerprofil
Anmeldungsdatum: 19.12.2009
Beiträge: 653
Beitrag Jockelx Mitglied 15:33:46 20.04.2012   Titel:              Zitieren

Vielleicht meint er mit 'app' z.B. Android-App. Da passiert es dann tatsächlich permanent, dass die Klasse 'unloaded' wird und es Probleme geben kann.
Allerdings kannst du ja im static-Ctor default-Werte zuweisen oder das angesprochenen Singelton nehmen.
snOOfy
Mitglied

Benutzerprofil
Anmeldungsdatum: 09.11.2003
Beiträge: 1097
Beitrag snOOfy Mitglied 15:36:51 20.04.2012   Titel:              Zitieren

Ok, danke für die Antworten, dann mach ich es mit der "Global" Klasse. Ich wollte nur verhindern, dass es hinterher unprofessionell aussieht.

_________________
http://me-lrt.de
gastantwort
Unregistrierter




Beitrag gastantwort Unregistrierter 15:05:11 21.04.2012   Titel:              Zitieren

snOOfy schrieb:
Ok, danke für die Antworten, dann mach ich es mit der "Global" Klasse. Ich wollte nur verhindern, dass es hinterher unprofessionell aussieht.

Globale Variablen sehen immer unprofessionell aus, egal wie du sie verpackst.

Das liegt daran, dass nur Leute die nicht programmieren können globale Variablen benutzen.
snOOfy
Mitglied

Benutzerprofil
Anmeldungsdatum: 09.11.2003
Beiträge: 1097
Beitrag snOOfy Mitglied 15:06:39 21.04.2012   Titel:              Zitieren

Ich bin ja durchaus bereit, das zu akzeptieren. Aber dann sag mir doch bitte wie du das mit dem Zufallszahlengenerator und dem Decimalformat machen würdest, das in verschiedenen Klassen benötigt wird.

_________________
http://me-lrt.de
dot
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.05.2004
Beiträge: 5618
Beitrag dot Mitglied 15:43:24 21.04.2012   Titel:   Re: Globale Variablen            Zitieren

snOOfy schrieb:
Nun dachte ich mir, es währe doch vielleicht besser, einen globalen Generator für alle Klassen zu benutzen.

Und wieso denkst du das?

snOOfy schrieb:
Wenn man an dem Format was ändern will, muss man es immer gleich in mehreren Klassen ändern.

Wieso brauchen all diese Klassen überhaupt das Format? Das zeigt doch, dass die Ausgabe quer über den Code verstreut ist. Kannst du nicht stattdessen direkt die ganze Ausgabe irgendwo kapseln?

_________________
one point of view will never reveal the entire scene.
314159265358979
Mitglied

Benutzerprofil
Anmeldungsdatum: 09.03.2010
Beiträge: 4658
Beitrag 314159265358979 Mitglied 16:05:42 21.04.2012   Titel:              Zitieren

gastantwort schrieb:
Globale Variablen sehen immer unprofessionell aus, egal wie du sie verpackst.

Das liegt daran, dass nur Leute die nicht programmieren können globale Variablen benutzen.

Bullshit.
gastantwort
Unregistrierter




Beitrag gastantwort Unregistrierter 10:37:27 22.04.2012   Titel:              Zitieren

snOOfy schrieb:
Ich bin ja durchaus bereit, das zu akzeptieren. Aber dann sag mir doch bitte wie du das mit dem Zufallszahlengenerator und dem Decimalformat machen würdest, das in verschiedenen Klassen benötigt wird.

Wenn du 2 Stellen im Projekt hast die einen Zufallsgenerator und ein bestimmtes DecimalFormat brauchen, hast du offensichtlich duplizierten Code. Lösung ist also die entsprechenden Stellen im Projekt zu refactorn.
Gregor
Moderator

Benutzerprofil
Anmeldungsdatum: 16.01.2002
Beiträge: 7762
Beitrag Gregor Moderator 13:34:58 23.04.2012   Titel:              Zitieren

gastantwort schrieb:
snOOfy schrieb:
Ich bin ja durchaus bereit, das zu akzeptieren. Aber dann sag mir doch bitte wie du das mit dem Zufallszahlengenerator und dem Decimalformat machen würdest, das in verschiedenen Klassen benötigt wird.

Wenn du 2 Stellen im Projekt hast die einen Zufallsgenerator und ein bestimmtes DecimalFormat brauchen, hast du offensichtlich duplizierten Code. Lösung ist also die entsprechenden Stellen im Projekt zu refactorn.

Ich denke, Deine Interpretation geht zu weit. ;)

_________________
"The problem with quotes on the Internet is that it is hard to verify their authenticity" - Abraham Lincoln
c++.de :: Java ::  Globale Variablen   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.