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)
-   -   Variablen einsparen? (http://www.expert-advisor.com/forum/showthread.php?t=4603)

Raul0 27.11.15 19:42

Variablen einsparen?
 
Hallo,

ich bin beim Energieoptimieren.

Meines Erachtens ist es sinnvoller, wenn z.B. OrdersTotal() nur einmal in der Funktion verwendet wird, nicht noch eine zusätzliche Variable anzulegen.

Das heisst von (Code 1):

PHP-Code:

int total OrdersTotal();
for( 
int cnt cnt <= total cnt++ ) 

zu dem (Code 2):

PHP-Code:

for( int cnt cnt <= OrdersTotal() ; cnt++ ) 

Der erste Code würde nur sinnvoll sein, sollte OrdersTotal() mehrfach abgefragt werden, somit würde dieser Wert sofort in der Variable total bereit stehen und kann in dieser weiter verarbeitet werden.

Sehe ich das richtig, oder gibt es einen Grund, warum das nur wie im ersten Code sein sollte?

Gruss, Raul

traderdoc 27.11.15 19:55

Kann man so machen. Bzgl. der Geschwindigkeit oder Energieoprtimierungen wirst Du nur leider nix von spüren.

traderdoc

Raul0 27.11.15 20:01

Ja, ich versuche es etwas sauber zu halten.

GoS 27.11.15 21:28

Zitat:

Zitat von Raul0 (Beitrag 31874)
Ja, ich versuche es etwas sauber zu halten.

Bin grosser Fan von "Code sauber halten" bzw. immer die gleichen Codelayout-Regeln zu benutzen. Dann ist lange nichtmehr bearbeiteter Code viel einfacher wiederzuverstehen...
In diesem Fall handhabe ich das grundsätzlich so, wie du im ersten Beispiel geschrieben hast, weil ich mehrere gleiche Funktionsausführungen von vorne herein vermeiden will.
Was ich z.B. definitiv anders mache, ich initialisiere die Variablen nicht mitten im Code, sondern alle am Anfang...

Ich denke aber, genau wie traderdoc schon meinte, für die Geschwindigkeit ist es egal...
ich würde immer die Lesbarkeit vorziehen

Raul0 27.11.15 21:49

Zitat:

Was ich z.B. definitiv anders mache, ich initialisiere die Variablen nicht mitten im Code, sondern alle am Anfang...
Du meinst bestimmt nicht in den globalen Variablen-Bereich, sondern im tickbasierten Durchlauf, so werden die Vars, gleich wieder genullt.

Jedoch was für einen Unterschied soll es machen, wenn die Initialisierung zu Beginn steht, oder in dem Bereich den es betrifft?

traderdoc 27.11.15 22:08

Jo, Lesbarkeit ist das Ah und Oh der Proggerei. Wie oft stellt einer meiner Kunden später fest, da wäre hier oder da noch etwas einzubauen. In der Zwischenzeit hatte ich bereits 3 anderer Aufträge abgearbeitet. Wenn dann nicht alles nach strikten Regeln und in übersichtlicher Form geschrieben wurde, ist das manchmal so, dass man den EA lieber noch mal schreiben müßte.
Da schreibe ich lieber bestimmte Funktionen separat als ineinander verschachtelt. Das verkürzt zwar den Code, aber das kann später keiner mehr lesen.

Die Stelle der Variablendeklaration hat auch was mit dem Gültigkeitsbereich zu tun. Aber in der Regel stehen die immer am Anfang der Funktion.

traderdoc

GoS 27.11.15 22:49

@Raul0:
Nein, in den GlobalScope kommen nur Variablen, bei denen es definitiv Sinn macht, sie dort zu initialisieren; eben wegen der Gültigkeit.

Ich arbeite sehr sehr viel mit Funktionen, die ich so kurz wie möglich halte. Sie sollen präzise das machen, wofür sie geschrieben sind. Und hier initialisiere ich sämtliche Variablen gleich am Anfang, um einen Überblick zu haben.

@traderdoc
Zitat:

Da schreibe ich lieber bestimmte Funktionen separat als ineinander verschachtelt. Das verkürzt zwar den Code, aber das kann später keiner mehr lesen.
Genau das ist auch mein Vorgehen.. Meine FuncLibs haben mittlerweile wohl schon fast 500kb; der EA ist bei 251 lines :)


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:44 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