Variablendeklaration in einer iterativen Methode = Böse?

Status
Nicht offen für weitere Antworten.
Hallo,

ich wollte mal fragen ob es ein No-No ist in einer iterativen Methode Variablen zu deklarieren!

Ich habe die folgende Methode:

Code:
public static void iterateChildren(Node n) {
  	//machIrgendwasMitNode(n);
  	NodeList list = n.getChildNodes();
  	for(int i = 0; i < list.getLength(); i++) {
  	    Node child = list.item(i);
  	    iterateChildren(child);
  	  }
 }

An der Stelle machIrgendwasMitNode will ich eine boolesche Variable anlegen - und während ich das hier so schreibe merke ich wie dämlich das wäre... Die würde ja jedes mal neu initialisiert werden...

Okay, also, wie bekommte ich in diese Methode noch Variablen rein, ich möchte nämlich keine globalen nehmen.
Mir ist klar, dass ich die in den Methodenkopf als Eingabeparameter packen kann, aber es wird nicht bei dieser einen Variable bleiben und daher wollte ich mal fragen ob man das auch irgendwie anders lösen kann.

Ich brauche da nämlich noch so ca. 20 andere Variablen, teils boolesche, teils String, doppelt verkettete Listen, Knoten und so weiter...

MFG Dennis
 
B

Beni

Gast
Du kannst den Variablen gleich beim erzeugen einen Wert zuweisen.
Code:
boolean nodeHatWas = node.hastDuWas();

Ansonsten: es ist durchaus üblich, dass man in der Methode neue Variablen herstellt, und soooo viel Zeit verlierst du dadurch nicht. Sorg einfach dafür, dass du die Variablen nicht zu früh herstellst (also kein riesiger Block am Anfang mit allen Variablen, und danach brauchst du blos 2 von 20 in der Methode).
 

L-ectron-X

Gesperrter Benutzer
Ich denke, das ist nicht so schlimm, weil die Variablen, die innerhalb einer Methode erzeugt werden, auf dem Stack abgelegt werden. Nach Methodenrückkehr werden diese Variablen, im Gegensatz zu den Objekten auf dem Heap, sofort zerstört.
 
Ja das ist richtig, aber der zuvor gespeicherte Wert geht weg oder nicht? Wenn ich den Baum durchlaufe und irgendwas finde dann setze ich zb a auf true, wenn das beim nächsten knoten nicht gefunden wird ist a wieder false. Ich möchte also a = a || (false oder true) haben, so das wenn es einmal auf true ist, es auch bleibt. Bei den anderen Variablen möchte ich z.B. immer wenn ich was finde, es zu einer Liste hinzufügen und so weiter... Jemand ne Idee?

MFG Dennis
 

Bleiglanz

Gesperrter Benutzer
dein problem ist wohl folgendes (stimmt das?):

du willst die variablen NACH dem Methodenaufruf irgendwie "haben"?

du willst sie nicht als Argumente der Methode übergeben?

du willst sie nicht als Membervariable der Klasse anlegen?

keine globalen oder static Felder verwenden?

=> dann geht das nicht!!

mach dir 20 Membervariablen, die du bei deinen Methodenaufrufen manipulierst und hol dir wenn alles fertig ist die Werte ab
 
Ja, das ist genau das, was ich meinte. Das mit den Membervariablen klingt gut, allerdings weiß ich nicht was das ist. Hättest Du mal nen Beispiel dafür?

MFG Dansen

Edit: Ich hoffe Membervariablen sind nicht global ?
 

helium

Mitglied
Ne Membervariable ist ne einfache Instanzvariable

Code:
class Foo {
   int membervariable;
}
 
Okay Danke, das klingt gut. Da ich auch auf sauberen Programmierstil achten muss, frage ich einfach mal: Wird sowas gern gesehen? Oder eher nicht?

MFG Dansen
 

Wildcard

Top Contributor
it depends...
Eine Klasse sollte so wenig Membervariablen wie möglich haben aber sie sind natürlich unumgänglich.
20 Membervariablen sind (wenn das keine GUI Klasse ist) allerdings recht viel, aber was soll man jetzt dazu sagen ohne zu wissen was du eigentlich machen willst und ohne dein KlassenDesign zu kennen.
Wenn du allerdings Membervariablen verwendest, achte darauf das sie private sind.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A 2D subimage detection mit einer AI Softwareentwicklung 0
B Etliche Anfragen von einer IP ablehnen? Softwareentwicklung 2
F Datenspeicherung in Listen statt in einer Datenbank Softwareentwicklung 6
C Grundgedanken zu einer Scoring App Softwareentwicklung 7
stg File-Download ohne Speichern einer lokalen Kopie Softwareentwicklung 8
D Datenverwaltung einer App Softwareentwicklung 3
K Einlesen einer .dat-Datei (verschiedene Formate) | Entwicklung unter Einsatz von Design-Patterns Softwareentwicklung 0
B In einer virtuellen Maschine entwickeln (Virtual Box) Softwareentwicklung 5
L Parsen einer HTML Seite Softwareentwicklung 3
K Mindestanforderung einer Software Softwareentwicklung 7
C Wie kann ich ein Panel auf einer Tabelle plazieren? Softwareentwicklung 9
R PHP: Auslesen einer ID aus Radiobutton und Nutzung in SQL Softwareentwicklung 2
T Über Joins mehrere Schlüssel aus einer Tabelle auflösen Softwareentwicklung 7
C Darstellung einer dynamischen Bindung Softwareentwicklung 2
I Entwicklung einer UML - KLasse Softwareentwicklung 2
R static methode innerhalb einer klasse ! Softwareentwicklung 5
M In MSSQL ganze Spalte einer Tabelle in andere Tabelle kopier Softwareentwicklung 2
W Statische Klassen oder neue Instanz einer Klasse nutzen? Softwareentwicklung 11
T nur EIN objekt einer klasse erstellen ? Softwareentwicklung 2
m@nu Problem mit einer RegEx Softwareentwicklung 4
K Kommunnikation in einer Applikation Softwareentwicklung 17
K GUI "Inhalte" in einer Datenbank speichern Softwareentwicklung 2
S Aufrufen einer Methode einer abgeleiteten Klasse von Oberkla Softwareentwicklung 4
S Überladen des Rückgabedatentypen einer Funktion Softwareentwicklung 7
G Befehl zum downloaden einer Website Softwareentwicklung 2
C Filterung von geraden und ungeraden Zahlen aus einer Datei Softwareentwicklung 4
D Name einer Instanz einer Klasse IN der Klasse erfahren ?? Softwareentwicklung 3

Ähnliche Java Themen

Neue Themen


Oben