Über den Kodierungsstil - Seite 4

 
Mathemat >> :

Yura, dein Beispiel mit einer Rückgabe ist natürlich logisch. Beachten Sie jedoch, dass in diesem Fall alle ifs immer ausgeführt werden, im Gegensatz zu dem Fall mit vielen Rückgaben, bei dem der Ausgang der Funktion unmittelbar nach Erreichen der Zeichenkette mit der Bedingung erfolgt.

ForexTools, danke, ich habe Ihre Ideen zur Formatierung übernommen.

Mathematik, denn der bedingte Operator "if" hat auch ein solches Gimmick wie "else".

if(Ausdruck1) operator1;

else if(Ausdruck2) operator2;

else if(Ausdruck3) operator3;

sonst operator4;

Dann wird der Operator nach der ersten wahren Bedingung ausgeführt und das war's. Alle Wenns werden nicht weiter ausgeführt. Wenn eine wahre Bedingung gefunden wird, wird der entsprechende Operator ausgeführt und das Programm fährt nach diesem Konstrukt fort (es wird nicht weiter im Konstrukt gesucht).

 

Ich streite mich nicht, Sergei. Ich habe hier über das Design von Jura gesprochen.

 

Es gibt noch eine weitere interessante Frage, die die Diskussion anregen soll: Wie sehr beeinflussen Plattformbeschränkungen den Stil beim Schreiben eines MQL-Programms? Zum Beispiel: Der Code ist leichter zu schreiben, zu verstehen/lesen und zu pflegen, wenn logisch isolierte Berechnungen in separaten Funktionen durchgeführt werden. Aber jeder Aufruf einer Funktion (vor allem in einem Interpreter wie MQL) ist ein zeitaufwändiger Vorgang. Ein einzelner Aufruf ist natürlich nicht kritisch, aber die meisten von uns müssen solche Dinge innerhalb einer Schleife schreiben (for int i=0; i<Bars; i++) usw. Und hier fangen wir an zu entscheiden, was wichtiger ist - schöner Code (in Form von Funktionen - damit wir später verstehen, was wir geschrieben haben) oder Geschwindigkeit der Ausführung (Kopieren ähnlicher Fragmente - damit Ihre Schleife die ganze Zeit arbeiten kann, bevor der nächste Tick kommt).

Es ist klar, dass in jedem Fall - die Entscheidung der goldenen Mitte Linie ist anders, aber.... Wer löst dieses Problem?

 

Ich habe die Ergebnisse einer kurzen Studie in demselben Thread auf der ersten Seite veröffentlicht. Bei meiner Menge an Berechnungen (sie ist gering) bin ich mit den Funktionen recht zufrieden - sogar mit einer Zeilenlänge. Aber es gibt auch andere Meinungen hier im Thread.

 
Das ist nicht das, was ich meine... Ich meine, inwieweit der Kodierungsstil durch die Notwendigkeit beeinflusst wird, die externen Beschränkungen der Plattform (jede - nicht nur MT) zu berücksichtigen.
 

Das hat wahrscheinlich eine Wirkung. Ich habe die alte Sprache von Trubo Pascual als ideal angesehen. Dort ist es möglich, Funktionen zu strukturieren, d.h. Deklaration von Funktionen in Funktionen. Bei C ist das nicht möglich. Und das ist genau das, was ich jetzt versuche, aber im Wesentlichen auf der C-Plattform. Natürlich ist dies nur eine Äußerlichkeit.

Bist du jetzt genauer, Sergej?

 

Раньше я считал идеальным древний язык Трубо Паскуаль. Там есть возможность структурирования функций, т.е. объявление функций в функциях.

Wie zum Teufel ist das möglich? Ich persönlich habe mit dem Erlernen von Programmiersprachen in meiner Zeit mit C begonnen. Jetzt kenne ich zwei davon: C und C++. Und ich muss sagen, dass es mich überhaupt nicht reizt, eine andere Sprache zu lernen. Warum muss ich eine Funktion in einer Funktion deklarieren? Da ich persönlich nur mit C und C++ aufgewachsen bin, verstehe ich diese Methode nicht.

 
C-4 >> Warum müssen Sie eine Funktion in einer Funktion deklarieren? >> Da ich persönlich nur mit C und C++ aufgewachsen bin, verstehe ich diese Methode nicht.

Aber ich verstehe es jetzt. Wenn ich Funktionen bis zur sechsten Aufrufreihenfolge habe, ist es für mich nicht immer bequem, alle Funktionen verschiedener Aufrufreihenfolgen auf einen Haufen zu werfen. Dadurch geht die Übersicht über die Anrufstruktur verloren. Und in Trubo Pasqualee ist alles ganz bequem: einige wenige Hauptfunktionen, die wichtige Verarbeitungen durchführen, und alle kleinen Unterfunktionen sind darin versteckt.

Aber wahrscheinlich ist es eine Frage der Gewohnheit. Ich habe schon lange nichts mehr darin geschrieben - und ich bereue es nicht wirklich.

 
C-4 >> :

Warum müssen Sie eine Funktion in einer Funktion deklarieren? Ich persönlich verstehe diese Methode nicht, da ich ausschließlich mit C und C++ aufgewachsen bin.

"Es gibt viele Dinge auf der Welt, Freund Horatio, von denen unsere Weisen nicht einmal geträumt haben" ;)

Das hat etwas Schönes - die Verkapselung in der Verkapselung, sozusagen. Aber im Ernst, es ist ein wirklich nützliches Instrument, wenn man es klug einsetzt, so wie alles andere auch.

Mathematik Ich dachte immer, dass die alte Sprache von Trubo Pascual perfekt sei.

Ich denke daran, zu ihm zurückzukehren, zumindest in Form von DLL in Delphi. Ich bin es leid, in MQL zu arbeiten, um einfache, aber notwendige Dinge zu machen (zum Beispiel trivialer Dialog mit Händler).

 

- Was ist die Stärke, Bruder!?

- Die Stärke liegt in den Klassen, Bruder!

Ich glaube nicht, dass bisher etwas Besseres als Klassen erfunden wurde. Deklarieren Sie private Funktionen innerhalb der Klasse und öffentliche Funktionen, um mit ihr zu arbeiten. Es ist schön und leistungsstark. Vererben Sie Funktionen und Variablen, durchdenken Sie die Hierarchie. Kapseln Sie Daten, indem Sie komplexe Datenstrukturen erstellen. Verarbeiten Sie die Daten mit den universellen Algorithmen aus der Bibliothek der Standardvorlagen. Ehrlich gesagt, ist die Kapselung in MQL4 sehr schlecht. Sie müssen verschiedene Arten von Daten getrennt aufbewahren, was zu Fehlern führt. Oft müssen wir auf die Indizierung von Arrays achten (ein furchtbar ärgerlicher Fehler). Ich denke, dass dies in MQL5 nicht mehr der Fall sein wird.