Strukturregeln. Lernen, wie man Programme strukturiert, Erforschung von Möglichkeiten, Fehlern, Lösungen usw.

 
Eine ungeschickte Programmstruktur führt sehr oft zu exorbitanten Schwierigkeiten bei der Entwicklung, vor allem, wenn die Projekte wachsen. Ich schlage vor, hier alle Fragen im Zusammenhang mit der Projektstrukturierung zu erörtern.

Von den einfachsten Programmen bis hin zu komplexen Softwarepaketen.

--

Ich fordere die Profis auf, diesen Thread zu unterstützen.

Ich verstehe die Unermesslichkeit eines Themas und seine "religiöse Aufladung"(*) und folglich mögliche chaotische und potenzielle Konflikte einer Branche.

Nichtsdestotrotz bitte ich um Unterstützung, denn jeder kann davon profitieren - sinnvolle Ideen (mit hohem Potenzial) finden sich oft im Müll, man muss sie nur bemerken und rechtzeitig "anpacken" können.

----

(*) Unter "religiös aufgeladen" verstehe ich in diesem Zusammenhang die Tatsache, dass Programmstrukturen von Programmierern oft auf Gewohnheiten, Traditionen und literarischen Quellen aufgebaut werden, aber keineswegs auf gesundem Menschenverstand und erwarteten realen Annehmlichkeiten für sich selbst und andere Menschen (z.B. zukünftige Co-Autoren).

 
Wer zuerst kommt, mahlt zuerst :). Warum fangen Sie nicht damit an, uns zu erzählen, wie es für Sie aussieht?
 
Aus dem Thread"Bugs, Bugs, Fragen":
A100 2013.07.22 14:00  
MetaDriver:

Strukturregeln. Der Inhalt ist sekundär, die Struktur ist primär.

Mein "Panel" hat die einfachste Struktur: Ereignis -> Handhabung

Auch die Ereignisse sind einfach: Tastendruck, Listenauswahl, Kalenderauswahl, Mausbewegungen usw.

Ein typisches Problem zu Beginn des Entwurfs: Wie kann man die Ereignisbehandlung in einem Programm so organisieren (strukturieren), dass es (das Programm) weiterentwickelt werden kann und gleichzeitig die Nacharbeit an dem, was bereits getan wurde, minimal ist.

Möchten Sie die Optionen besprechen?

 
MetaDriver:
Aus dem Zweig"Bugs, Bugs, Fragen":

Ein sehr typisches Problem für den Beginn des Entwurfs: Wie kann man die Verarbeitung von Ereignissen in einem Programm so organisieren (strukturieren), dass es (das Programm) weiterentwickelt werden kann und gleichzeitig das, was bereits getan wurde, mit einem Minimum an Aufwand wiederholen kann.

Möchten Sie die Optionen besprechen?

Gibt es zum Beispiel Literatur?

Im Allgemeinen überschneiden sich Planungsfragen mit CAD und TRIZ.

Ich zeichne auf Papier, das ist für mich bequemer, manchmal brauche ich bis zu 50 Blätter, bis ich eine klare Struktur habe. Kann sicherlich in spets.editors, aber jeder von ihnen für mich unbequem (begrenzt), unmöglich, einen Höhenflug zu realisieren, kurz gesagt, verlangsamen die Arbeit.

Система автоматизированного проектирования — Википедия
  • ru.wikipedia.org
Эту страницу предлагается объединить с CAx. Пояснение причин и обсуждение — на странице Википедия:К объединению/18 января 2014. Обсуждение длится одну неделю (или дольше, если оно идёт медленно). Дата начала обсуждения — 2014-01-18. Если обсуждение не требуется (очевидный случай), используйте другие шаблоны. Не удаляйте шаблон до...
 

Ich habe die einfachste Option

int main()
{
        while ( !IsStopped() )
        {
                switch ( GetEvent() ) {
                case TIMER   :
                case BUTTON  :
                case LISTVIEW:
                case CALENDAR:
                case CLOSE   :
                case ERROR   :
                default      :
                }
        }
}
 
MetaDriver:

Was versteht man unter Struktur?

ZS: So wurde es mir beigebracht:

1. alles, was man in einer Funktion tun kann, ist in einer Funktion.

2. goto ist eine Sünde

3. alle Bedingungen müssen minimal sein und es darf keine Überschneidung in einer Bedingung geben

4. 3. Einrücken

5. man muss so schreiben, dass andere es nach einem selbst lesen können

6. klare und aussagekräftige Variablennamen

7. Kommentare, aber übertreiben Sie es nicht

so, aber nicht ganz so: http://korzh.net/2011-03-pravila-xoroshego-tona-v-programmirovanii.html

Правила хорошего тона в программировании
  • korzh.net
Сегодня хотелось бы немного поговорит о качестве кода при программировании. Многие из нас не раз сталкивались с ситуацией, когда приходилось разбираться в чужом коде. Сколько же было матных слов произнесено при этом. Так давайте же обсудим некоторые правила, которые все и так знают. 1. Всегда делайте отступы Самое сложное, в неправильно...
 
Urain:

Gibt es zum Beispiel Literatur?

Im Allgemeinen überschneiden sich Planungsfragen mit CAD und TRIZ.

Ich zeichne auf Papier, das ist für mich bequemer, manchmal werden bis zu 50 Blätter verbraucht, bis eine klare Struktur entsteht. Sie können natürlich spezielle Editoren verwenden, aber jeder von ihnen ist für mich unbequem (begrenzt), es ist unmöglich, einen Höhenflug zu realisieren, kurz gesagt, sie verlangsamen die Arbeit.

CAD ist nicht genau dasselbe, aber es handelt sich um computergestütztes Design.

Bevor ich ein Programm schreibe, wurde mir beigebracht, eine Skizze auf Papier zu erstellen, eine vereinfachte Algo-Sprache, aber ich bin das nicht gewohnt.

 
FAQ:
Wer zuerst kommt, mahlt zuerst :). Warum fangen Sie nicht damit an, uns zu erzählen, wie es für Sie aussieht?

Nun, das hatte ich mir schon gedacht... ))

OK, ich habe nicht viel zu verbergen (was die Strukturierung angeht), ich habe keine Angst vor Diskussionen.

Aber ich empfehle Ihnen nicht, sofort davon auszugehen oder voreilig zu kritisieren - ich gehe bei meinen Entscheidungen nicht von "vorbildlicher" oder auch nur irgendeiner Art von Harmonie aus - sie sind in ihrer Masse nicht besonders fundiert und entstehen durch die gleichen "religiösen" Faktoren - Gewohnheiten, "Buchwahrheiten", Forenartikel, Muster von Standardterminals und anderen spontan angesammelten Müll im Kopf. Ich habe einige Erkenntnisse, aber nichts allzu Schwerwiegendes.

Zunächst möchte ich ein paar praktische Begriffe vorschlagen, damit es weniger Verwirrung gibt (ich vermute, es wird viele geben).

1) Physische Projektstruktur: Die Organisation von Dateien, Ordnern und anderen Einheiten, die von "außen" betrachtet werden.

2) Logische Projektstruktur: Organisation des gesamten "internen" Softwarematerials - Variablen, Funktionen, Klassen, Protokolle, usw.

-----------------

Die physische Struktur meiner mql-Projekte ist sehr einfach und primitiv. Ich versuche dies bewusst zu tun, um Verwirrung zu vermeiden und die Folgen einer möglichen Verwirrung zu minimieren.

In der Regel handelt es sich (bei einem mittelgroßen Projekt) um eine Reihe von .mqh-Dateien (in entsprechenden Ordnern) + eine mq5-Datei.

// Wenn es sich um ein Multi-Thread-System handelt (z. B. im einfachsten Fall der Expert Advisor + Indikatoren), dann entspricht die Anzahl der mq5-Dateien der Anzahl der Programme im Projekt.

Ich versuche, keine (.ex5) Bibliotheken zu verwenden // Eine sehr kontroverse Entscheidung, aber ich tue es, um die Laufzeitprobleme zu minimieren.

--

Ich werde mich vorerst nicht zu logischen Projektstrukturen äußern - das Thema ist sehr umfangreich und ich muss mir den Atem rauben... :)

 
sanyooooook:

CAD ist nicht ganz dasselbe, aber es handelt sich um computergestütztes Design.

Mir wurde beigebracht, vor dem Schreiben eines Programms eine vereinfachte Algo-Sprache zu skizzieren, aber ich habe mich nie daran gewöhnt.

Ich versuche, mir das Problem als Ganzes vorzustellen und die wichtigsten Objekte zu identifizieren, die das Problem ausmachen.

Dann zerlege ich die Objekte in ihre Komponenten und suche nach Überschneidungen in den Komponenten, und dann erscheinen die Vorgängerobjekte.

So ist das nun einmal.

Wenn ich in einem Projekt auf Entitäten stoße, auf die ich bereits gestoßen bin, versuche ich, alten, verifizierten Code zu verwenden.

Wenn es um das Design geht, sollten Sie einfach aufhören, sich zu streiten, und den MQ-Stil übernehmen, denn mit einem Klick auf eine Styler-Schaltfläche erhalten Sie alle den gleichen Stil, und alles wird für jeden verständlich sein.

 
MetaDriver:

Ich versuche, keine Bibliotheken (.ex5) zu verwenden. // Eine sehr umstrittene Lösung, aber ich tue es, um Laufzeitprobleme zu minimieren.

Keine Bibliothek zu verwenden bedeutet, keine .dll zu verwenden, und die Verwendung der letzteren spart das Codevolumen, da sie gleichzeitig in MQL4 und MQL5 verwendet werden kann
 
Urain:

Ich versuche, die Aufgabe als Ganzes zu visualisieren und die wichtigsten Objekte zu identifizieren, aus denen die Aufgabe besteht.

Dann unterteile ich die Objekte in Komponenten, suche nach Überschneidungen in den Komponenten, und dann erscheinen die Vorgängerobjekte.

So ist das nun einmal.

Wenn ich in einem Projekt Objekte finde, die ich schon einmal gesehen habe, versuche ich, den alten geprüften Code einzubeziehen.

Sie denken objektorientiert, ich denke funktional)
Grund der Beschwerde: