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

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

21

28.04.2011, 13:55

Fakt ist, dass man es lieber so machen sollte, wie es zu Beginn gemacht wurde und nicht erst innerhalb der Funktion das Level dekrementieren. Denn es ist ja auch möglich, dass das Level, das an die Funktion übergeben wird nicht aus einer User-Eingabe stammt und dann das Array bereits berechnet wurde. Oder man möchte mehrere solcher Funktionen verwenden. Wenn die alle immer selbst level dekrementieren, ist das auch eher suboptimal. Also einfach so lassen wie am Anfang und level direkt nach der Eingabe dekrementieren(und bei der Levelaugabe einfach level + 1 ausgeben), dann macht die Funktion auch nicht irgendwelche Sachen, die sie nicht tun sollte ;)

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

22

28.04.2011, 14:18

dann macht die Funktion auch nicht irgendwelche Sachen, die sie nicht tun sollte
Man muss erstmal definieren, was die Funktion machen soll, sonst kann man gar nicht beeurteilen, ob sie Unsinn macht.

und nicht erst innerhalb der Funktion das Level dekrementieren.[...]Also einfach so lassen[...]und bei der Levelaugabe einfach level + 1 ausgeben)
Quatsch. Wichtig ist festzulegen, was der Inhalt einer level-Variable bedeutet. Ob man nun immer eins dekrementiert oder inkrementiert macht dann keinen Unterschied mehr, so lange es an allen Stellen konsistent ist.

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

23

28.04.2011, 14:31

Quatsch. Wichtig ist festzulegen, was der Inhalt einer level-Variable bedeutet. Ob man nun immer eins dekrementiert oder inkrementiert macht dann keinen Unterschied mehr, so lange es an allen Stellen konsistent ist.

Das ist schon richtig. Natürlich muss man sich erst mal darüber klar sein, was die Funktion tun sollte. Allerdings halte ich es für unsinnig, eine Variable, die wenn sie verwendet wird, immer dekrementiert werden muss, nicht direkt nach der Eingabe zu dekrementieren. Wenn du die Variable dann häufiger verwendest und einmal vergisst sie zu dekrementieren, bekommst du halt evtl. undefiniertes Verhalten. Und da mache ich es lieber einmal für immer und kann mir sicher sein, dass ich diese Variable in Verbindung mit meinem Array ohne zusätzliche Rechenoperationen verwenden kann als dass ich es bei 100 Mal möglicherweise einmal vergesse. Natürlich hast du recht, dass es im Grunde genommen egal ist, ob man nun eins dekrementiert oder inkrementiert. Der Unterschied liegt nur darin, dass man bei Vergessen der Dekrementation ggf. undefiniertes Verhalten hervorruft, bei Vergessen der Inkrementation schlichtweg eine falsche Ausgabe erzeugt, was ohne große Probleme auffinbar sein sollte.

Werbeanzeige