uyeda - Di 20.09.16 22:48
Titel: if-Abfrage ordnen / umstrukturieren
Hallo liebe Foren-Gemeinde,
ich bin heute ziemlich knatsche in der Birne, und finde einfach keinen schönen Weg dieses häßliche Gebilde besser zu ordnen oder umzustruktieren. Deswegen bin ich hier (neu angemeldet), und frage einfach mal kurz nach, wie ich diese Abfragen "schön" machen könnte.
Hier ist der Code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| Book XMLParse(XmlReader reader, string bookName, int iD) { Vector3 bookPosition = Vector3.zero; Quaternion rotation = Quaternion.identity; Vector3 bookMove = Vector3.zero; float timer = 0; bool goOn = true;
if (goOn) goOn = reader.ReadToFollowing("bookPosition"); if (goOn) goOn = ParseV3(reader, out bookPosition); if (goOn) goOn = reader.ReadToFollowing("rotation"); if (goOn) goOn = ParseQ(reader, out rotation); if (goOn) goOn = reader.ReadToFollowing("bookMove"); if (goOn) goOn = ParseV3(reader, out bookMove); if (goOn) goOn = reader.ReadToFollowing("timer"); if (goOn) { goOn = float.TryParse(reader.GetAttribute("t"), out timer); if(!goOn) Debug.LogError("Read Float " + reader.LocalName + " ... failure"); } Book ret = new Book (bookName, iD, bookPosition, rotation, bookMove, timer);
if (!goOn) ret = null;
return ret; } |
Die Parsefunktionen parsen nur un geben 'nen Boolean zurück, ob es geklappt hat, bzw. speichern meine Werte in den out Wert.
Danke im voraus, wenn ihr helfen könnt. Mir reicht auch ein kurzer Strukturvorschlag, hauptsache ich fühle mich nicht mehr so dumm, was Struktur und Ordnung angeht.
Viele Grüße
Peter
PS: es ist mein erster Beitrag, ich hab auch schon gesucht, muss aber gestehen, dass ich nichts konkretes gefunden habe, leider. Wenn es schon eine Antwort auf ähnliche Fragen gibt, verlinkt sie mir bitte.
Christian S. - Di 20.09.16 23:00
Hallo und :welcome:!
Müsste das nicht äquivalent zu sowas sein?
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| var goOn = reader.ReadToFollowing("bookPosition") && ParseV3(reader, out bookPosition) && reader.ReadToFollowing("rotation") && ParseQ(reader, out rotation) && reader.ReadToFollowing("bookMove") && ParseV3(reader, out bookMove) && reader.ReadToFollowing("timer") && float.TryParse(reader.GetAttribute("t"), out timer); |
Durch die Kurzschlussauswertung sollte das genau das tun, was Du bisher mit den if-Abfragen tust.
Grüße
Christian
//edit: Hm, nein, nicht ganz. Das mit dem Debug-Log bringt man nicht genauso darin unter :gruebel: