Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Schleifenbedingungen (http://www.expert-advisor.com/forum/showthread.php?t=7047)

AVT 16.07.21 13:33

Schleifenbedingungen
 
Wann ist es sinnvoller eine der beiden Auswahlkriterien zu verwenden?
Beispiel:
Code:

for(int i=0; i<100; i++)
{
  //1. Möglichkeit: Ausschluß aller anderen
  if(Bedingung!=erfüllt) continue;
  ActionBeiBedingungErfüllt;

  //2. Möglichkeit: nur bei Bedingung
  if(Bedingung==erfüllt) ActionBeiBedingungErfüllt;
}

Gibt es Gründe, eine Art zu bevorzugen, möglicherweise um Fehler auszuschließen?
Oder ist das letztlich egal?
Freue mich, Eure Meinung dazu zu hören.
AVT

TogoTiger 16.07.21 14:16

Ist egal. Persönlich bevorzuge ich die 2. Variante. Bin ein visueller Typ und kann den Code besser lesen, wenn das, was beim IF passieren soll, eingerückt wird.
Wenn aber viel Code kommt, verwende ich auch schon mal Variante 1.

AVT 16.07.21 21:40

Zitat:

Zitat von TogoTiger (Beitrag 45545)
Ist egal. Persönlich bevorzuge ich die 2. Variante. Bin ein visueller Typ und kann den Code besser lesen, wenn das, was beim IF passieren soll, eingerückt wird.
Wenn aber viel Code kommt, verwende ich auch schon mal Variante 1.

Danke für Deinen Kommentar. AVT

traderdoc 17.07.21 10:12

Nun ja, das kommt bei mir v.a. darauf an, was nach if in der Schleife steht.
Schon allein die Tatsache, dass falls 2. geschrieben wird und nach if weiterer Code steht, der auch für den Fall false abgearbeitet werden muss, verbietet sich automatisch die Variante 1.
Insofern kann ich dann diese Frage von @AVT:
"Oder ist das letztlich egal?"
eindeutig mit Nein beantworten.
D.h. bei z.B. verschachtelten Schleifen würde ich Variante 1. wählen.

Aber ich denke, @AVT meinte in der Tat nur diese eine if-Abfrage innerhalb der Schleife. In der Dauer der Abarbeitung beider Varianten gibt es keine signifikanten Unterschiede. Also wäre es dann auch wurscht, welche Variante man wählt.
Dann wäre die Antwort: Ja.

traderdoc

Ca$hDigger 17.07.21 11:20

Für "um Fehler auszuschließen" ist definitiv Variante 2 zu bevorzugen, Begründung siehe traderdoc. continue eher nur wenn man bewusst bestimmten Code überspringen möchte.
Zudem würde ich immer geschweifte Klammern nutzen, dies kann zusätzlich dafür sorgen Fehler auszuschließen wenn der Code zB um weitere Aktionen erweitert wird.

AVT 17.07.21 16:08

:) Danke für all Eure Antworten.
Ich habe mir angewöhnt, die 2. Variante zu schreiben und damit die genauen Bedingungen festzulegen.
Nun habe ich aber beim Codelesen oft schon die 1. Variante gesehen, was mich zu der Frage brachte.

@Ca$Digger
Klammern stimmt, sind bei mir schon aufgrund der Debug-Prints (kann man ja kommentieren, wenn nicht mehr gebraucht ;) ).

Mal angenommen, ich untersuche einen Chart, auf dem etliche Objekte sind, mit interessieren aber nur grüne Horizontallinien.
Dann kann ich
entweder 1. erst mal alles ausschließen, was nicht Horizontallinie ist, und dann sehen ob der Rest grün ist.
oder 2. direkt nur nach grünen Horizontallinen suchen.

Erweiterbar sind bei Version gleichermaßen. Brauche ich irgendwann auch rote Horizontallinien, suche ich
im 1. Fall dann zusätzlich nach roter Farbe
im 2. Fall suche ich direkt nach roten Horizontallinien
Die Codelänge hat bei mir noch nie eine Rolle gespielt, Hauptsache klar und verständlich.

@traderdoc
Ja, ich meinte tatsächlich eine if-Abfrage.
Daß es in der Dauer der Abarbeitung wenig Unterschiede gibt, ergibt sich ja schon daraus, daß jedes Objekt geprüft werden muß (egal auf was).

Fazit für mich: es ist egal, ich muß meine Gewohnheiten nicht ändern. :D
AVT


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:54 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum