Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

tnecniv

Treue Seele

  • »tnecniv« ist der Autor dieses Themas

Beiträge: 164

Wohnort: BERLIN

  • Private Nachricht senden

1

01.11.2007, 17:08

stilfrage

Ich wollt mal fragen ob das hier schlechter stil ist:

C-/C++-Quelltext

1
if(pPointer && pPointer->bool)


da das "&&" ja schon nach der ersten bedingung abbricht sollte die nicht erfüllt sein bekomm ich ja eigentlich keine fehler.... aber ist das "schön"?

Danke und Gruß
Sagt der igel zu dem dachs:
willst du größer sein, dann wachs!
- alte Fritz weisheit

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

2

01.11.2007, 17:56

Ich würd sagen, es ist sinnvoll und lesbar - also ok.
Ob es schön ist verkommt dann zur Geschmacksfrage^^

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

3

01.11.2007, 18:20

Ist meiner Meinung nach schwierig, weil zwei verschiedene Fehlerquellen mit einer einzigen Anweisung abgehandelt werden.

Nullpointer erfordern in vielen Fällen eine andere Behandlung, als logische Fehler oder Abbruchbedingung. Das hängt aber stark von der jeweiligen Situation ab.

Etwas wie

C-/C++-Quelltext

1
2
if(player && !player->hasWeapon())
// Behandlung

empfinde ich schon als schwierig. Den Fall, dass (wieso auch immer) kein Spieler existiert, kann man nur schwerlich genauso behandeln wie wenn er keine Waffe hat. Wie würdest du denn in diesem Fall die Fehlermeldung ausgeben?

Meiner Meinung nach sollte man die Integritätsprüfung einer Variable immer in einem einzelnen und alleinigen Schritt machen und danach alle weiteren Schritte in dem Wissen ausführen, dass die Variable in Ordnung ist.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

4

01.11.2007, 18:23

Na dann sehe ich lieber direkt in der Anweisung/Abfrage, dass die Var gültig sein muss, damit die weiteren Bedingungen geprüft werden können. Generell mag ich Zusammenfassungen von Bedingungen, solange sie nicht zu komplex werden, denn sonst hat man so ein Klammermarathon oder Bedingungen wo man erstmal von vorne nach hinten und dann nochmal von hinten nach vorne liest und es immernoch nicht versteht.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

5

01.11.2007, 21:47

Zitat von »"Das Gurke"«

Wie würdest du denn in diesem Fall die Fehlermeldung ausgeben?


If-Anweisungen gibt es nicht nur um detailliert Fehlerbericht zu erstatten... Ich finde Abfragen á la if ( ptr && ptr->foo() ) sehr sinnvoll, da man zum einen sicher geht das der Zeiger existiert (ist Voraussetzung für die Dereferenzierung) und zum anderen keine unnötig verschachtelten If-Anweisungen hat.

Letzten Endes hängt es natürlich von der Situation und nicht zuletzt vom eigenen Geschmack ab, wie man If-Anweisungen gestaltet und kombiniert! Ich finde aber das nichts gegen ein Konstrukt, wie oben genannt, spricht - Im Gegenteil kann die Abfrage sogar besser abgearbeitet werden!
@D13_Dreinig

tnecniv

Treue Seele

  • »tnecniv« ist der Autor dieses Themas

Beiträge: 164

Wohnort: BERLIN

  • Private Nachricht senden

6

02.11.2007, 18:29

gut,gut!
dann werd ich es auch weiterhin so machen wie beschrieben! ich mag verschachtelte ifs nämlich auch nicht so...!
Danke!
Sagt der igel zu dem dachs:
willst du größer sein, dann wachs!
- alte Fritz weisheit

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

7

02.11.2007, 19:40

Hmm, bei mir sieht das meist in etwa so aus:

C-/C++-Quelltext

1
2
3
4
if(!pointer)
    throw new GX::NullPointerException();
if(pointer->someMethod())
    // lalala


Erst eine Prüfung ob der Pointer auch tatsächlich derefenziert werden kann. Danach dann alle Aktionen. Mein Anspielen auf die Fehlermeldung daher, weil ich bei Nullpointern explizit eine passende Excecption auswerfe, die selbstverständlich auf die zweite Anweisung nicht passen würde.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

8

02.11.2007, 20:13

Ja, das mit den Exceptions ist ja sowiso so eine Sache... Ich finde das Werfen einer Exception bei sowas total unnötig. Die verschwendeten Resourcen kann man anderswo viel besser einsetzen.
@D13_Dreinig

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

9

02.11.2007, 20:15

Au ja, wollen wir uns um die Frage der korrekten Verwendung von Exceptions kloppen? *g* Ich hab von "hidden goto" bis "unerlässlich" glaube ich schon so jeden Kommentar mal gehört.

Irgendwie verwunderlich, dass die Diskussion hier noch nicht vom Zaun gebrochen ist. JAVA gegen den Rest, VS gegen den Rest, DirectX Graphics gegen OpenGL etc hatten wir ja alles schon. Zeit für ein neues Schlachtfeld? :badgrin:

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

10

02.11.2007, 20:19

Fakt ist das jede Ausnahme die geworfen wird unmengen Resourcen verbrät, die anderswo besser verwendet werden könnten... Das ist einfach so und jeder halbwegs gute Programmierer wird dir raten mit Exceptions vorsichtig um zu gehen und sparsam zu verwenden. Da ist keine Diskussion notwendig, das ist einfach so. Und möglichst viele Exceptions werfen gehört auch nicht zum "guten" Programmdesign, sondern eher zum "ich weiß nicht was ich tue" Design...
@D13_Dreinig

Werbeanzeige