Fehler, Irrtümer, Fragen - Seite 1439
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Wenn der Programmierer etwas in ein Array schreibt, das 10 Elemente mit dem Index 20 enthält, bedeutet das meiner Erfahrung nach höchstwahrscheinlich, dass er/sie einen Fehler gemacht hat und das Programm einen Fehler generieren sollte, anstatt das Array zu vergrößern und damit eine fragwürdige Aktion zu verbergen.
All diese "Arrays zur Größenanpassung" sind in Bezug auf das Verstecken potenzieller Fehler weitaus lästiger als bequem. Die Größe eines Arrays nicht im Auge behalten zu müssen, ist außerdem eine potenziell gefährliche Praxis, die zu schwer zu behebenden Fehlern führt.
Liegt es an mir, oder haben Sie nicht mit den betreffenden Sprachen gearbeitet? Sie müssen keinen Index angeben, der hinzugefügt werden soll: er wird automatisch zugewiesen und die Größe des Arrays wird ebenfalls erhöht. Der Programmierer hat bei diesem Vorgang einfach keine Chance, einen Fehler mit dem Index zu machen.
Sie können ein ähnliches Verhalten mit Klassen implementieren und die entsprechenden Funktionen pop, shift, unshift usw. hinzufügen. Und ziehen Sie einen Wagen von Klassen von Code zu Code, wobei jeder Code %10...20 Funktionen davon verwendet. Hört sich das nach einer guten Lösung an? Ein Beispiel für die richtige Lösung ist meiner Meinung nach das Hinzufügen der Funktion ObjectsDeleteAll mit der Möglichkeit, nach Präfix zu löschen - dies ist ein weiterer Baustein in Richtung höherer Programmierung - und die meisten Programmierer sind in den Papierkorb geflogen, also haben sie die Funktion selbst entwickelt. Leider werden wir das bei Arrays kaum sehen...
И таскать телегу классов из кода в код, при том что в каждом коде из неё используются %10..20 функций.
Sie brauchen keine "Smart Array"-Klassen zu schreiben, diese sind bereits in der MetaQuotes Standard Library enthalten, siehe die Arry-Klassenfamilie
Geht es nur mir so, oder haben Sie nicht mit den fraglichen Sprachen gearbeitet? Sie müssen keinen Index für das hinzugefügte Element angeben, es wird automatisch zugewiesen und die Größe des Arrays wird ebenfalls erhöht. Der Programmierer hat bei diesem Vorgang einfach keine Chance, einen Fehler mit dem Index zu machen
Awwwww... Welche Chancen hat der Programmierer, einen Fehler zu machen? Sie irren sich, wenn Sie glauben, dass Sie alle Varianten eines komplexen Programms berücksichtigen können.
Alle diese "Standardaktionen" müssen Eigenschaften von komplexen Objekten sein. Einfache Objekte, wie Variablen, Arrays und einfache Strukturen, müssen so wenig "Standard"-Eigenschaften wie möglich haben.
Zum Beispiel müssen sie bei der Erstellung einen undefinierten Wert speichern, nicht Null.
Sie können ein ähnliches Verhalten mit Klassen implementieren und entsprechende Funktionen wie pop, shift, unshift usw. hinzufügen. Und ziehen Sie einen Wagen von Klassen von Code zu Code, wobei jeder Code %10...20 Funktionen davon verwendet. Hört sich das nach der richtigen Lösung an?
Von der Logik her ist es die richtige Lösung. Wenn Sie mit solchen Klassen arbeiten, ist ihr Verhalten transparent.
Und was ist mit dem "Ziehen eines Wagens voller Klassen" - beim Programmieren zieht man sie nicht, man fügt einfach die Bibliothek ein. Und beim Kompilieren sollte ein normaler Linker nicht alle Methoden aus der Bibliothek in eine ausführbare Datei einfügen, sondern nur die, die verwendet werden.
Beispiel für die richtige Lösung meiner Meinung nach - das Hinzufügen zu ObjectsDeleteAll Funktion löschen durch Präfix - dies ist ein weiterer Mikron in Richtung höherer Ebene Programmierung - und die meisten Programmierer haben in Papierkorb diese selbstgemachte Funktion geflogen. Leider ist es unwahrscheinlich, dass dies bei Arrays der Fall ist...
Meiner Meinung nach ist dies auch ein falscher Ansatz, und zwar aus demselben Grund. Die Funktion wird mit Aufgaben belastet, die nicht typisch für sie sind und nicht der Logik ihrer Anwendung folgen.
Die richtige Lösung scheint mir zu sein, einen Klassenobjektmanager im Graphen zu haben, der eine Liste dieser Objekte führt und die notwendigen Objekte entfernt, wenn Funktionen aufgerufen werden. Die Namenspräfixe sollten meines Erachtens lediglich dazu dienen, einer Person einige Informationen über den Gegenstand zu verdeutlichen. Und das Löschen - sollte in keiner Weise auf dem Namen des Objekts basieren, sondern auf dem Speichern dieses Namens in einem Array.
Version 5.0 build 1150, Demo
Aktualisieren Sie Ihr Terminal (Sie müssen sich mit dem MetaQuotes-Demo-Server verbinden). Derzeitige Ausführung:
Dies ist das Drehbuch:
Ergibt dieses Ergebnis:
Aktualisieren Sie Ihr Terminal (Sie müssen sich mit dem MetaQuotes-Demo-Server verbinden). Derzeitige Ausführung:
Dies ist das Drehbuch:
Ergibt dieses Ergebnis:
Danke, wissen Sie, warum das Flag einen Wert von 0 hat, als ob sich nichts geändert hätte?