Grundsätzliche Frage zur Programmstruktur

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

1. beim beispiel von edel kann man den eventloop auch direkt in der main() procedure einbaun
2. die verwendung einer main() procedure ist auch kein muss, sondern eine stilfrage.
Das kann nur jemand schreiben der es nocht nicht ausprobiert hat,
und die Funktion "Main" stand hier auch nicht zu Debatte
Der Vorteil liegt doch klar auf der Hand, bzw ist doch ersichtlich.
Das ganze ist uebersichtlicher,weniger fehleranfaelliger und vor
allem benutzerfreundlicher.
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: Grundsätzliche Frage zur Programmstruktur

Beitrag von Bisonte »

Jungs.... Kommt mal wieder runter...
Es geht doch bloss um die Frage : "wie macht man das, bzw wie macht ihr das ...."

Jeder machts auf seine Art und weise... Da muss sich keiner aufregen oder "herablassend" werden.... nur mal so nebenbei.

über Geschmack lässt sich nunmal nicht streiten ;)
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ich finds nur wieder mal ätzend...
die meisten leute schreiben "ich mach das so und so",
und einige schreiben dazu "denn das und das"

nur monseur Bild stellt sich mal wieder hin und schreibt
Es gibt keinen besseren Weg !
ignoriert geflissentlich
TomS hat geschrieben:Hallo. Kannst du auch erklären, warum das besser ist? ... Wo sind denn da die Vorteile?
und schreibt lediglich
edel hat geschrieben:Der Vorteil liegt doch klar auf der Hand, bzw ist doch ersichtlich.
nun, wenn der Vorteil so deutlich und klar ersichtlich ist,
dann muss er sich doch auch einfach ausformulieren lassen...

und wenn nicht, dann ist es eben doch nur heiße luft.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Little John

Beitrag von Little John »

ts-soft hat geschrieben:Vermeidet z.B. While WindowEvent() : Wend
Das habe ich mit Überraschung gelesen. Ich meine, hat denn

Code: Alles auswählen

While WindowEvent() : Wend
Nachteile, so dass man es möglichst vermeiden sollte? :o

Gruß, Little John
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Little John hat geschrieben:Das habe ich mit Überraschung gelesen. Ich meine, hat denn

Code: Alles auswählen

While WindowEvent() : Wend
Nachteile, so dass man es möglichst vermeiden sollte? :o

Gruß, Little John
Das verschluckt ja nur Ereignisse, solange der User keine Auslösen kann,
also das Fenster nicht sichtbar ist, ist es egal, aber sollte man nicht machen,
wenn das Fenster sichtbar und aktiviert ist. Mancher User ist nicht so
begeistert, wenn er irgendwo hinklickert und nix paschiert.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Little John

Beitrag von Little John »

ts-soft hat geschrieben:Das verschluckt ja nur Ereignisse, solange der User keine Auslösen kann, also das Fenster nicht sichtbar ist, ist es egal,
Kann man nicht auch sagen, dass diese "leere Schleife" Windows ermöglicht, alle noch in einer Warteschlange befindlichen Ereignisse abzuarbeiten? D.h. dass es manchmal sehr sinnvoll sein, sowas an best. Stellen im Programm einzubauen?
ts-soft hat geschrieben:aber sollte man nicht machen,
wenn das Fenster sichtbar und aktiviert ist. Mancher User ist nicht so
begeistert, wenn er irgendwo hinklickert und nix paschiert.
Abgesehen davon, dass es in diesem Thread (jetzt) offenbar schwer ist, eine polemikfreie Antwort zu bekommen ...
Das heißt also, dass es darauf ankommt wo und in welchem Zusammenhang

Code: Alles auswählen

While WindowEvent() : Wend
verwendet wird. Das ist doch sowieso klar. Aber ich sehe nicht dass es darum geht, das generell zu vermeiden.

Das heißt ich verstehe immer noch nicht warum die Aussage
Vermeidet z.B. While WindowEvent() : Wend
für die Konstruktion von edel spricht. Zumal diese Aussage meines Erachtens impliziert, dass ohne edels Konstruktion zwangsläufig das (zu vermeidende)

Code: Alles auswählen

While WindowEvent() : Wend
benutzt werden müsste. Was aber ja nicht der Fall ist.

Gruß, Little John
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Little John hat geschrieben: Das heißt ich verstehe immer noch nicht warum die Aussage
Vermeidet z.B. While WindowEvent() : Wend
für die Konstruktion von edel spricht. Zumal diese Aussage meines Erachtens impliziert, dass ohne edels Konstruktion zwangsläufig das (zu vermeidende)

Code: Alles auswählen

While WindowEvent() : Wend
benutzt werden müsste. Was aber ja nicht der Fall ist.
Doch, auf andere Weise könnte man nicht das Fenster anzeigen während die
Gadgets gefüllt werden, bzw. die dabei anfallenden Ereignisse abarbeiten,
ohne das Useraktionen verloren gehen.
Andere Methode wäre, das Fenster versteckt zu erstellen, die Gadgets
füllen, dann die Ereignisse abarbeiten und danach erst das Fenster anzeigen.
Da ist Edels Methode meist die bessere.

Für die meisten Popelfenster ist dieser Aufwand nicht nötig, da kommts nicht
zum Fenstertitel: Keine Rückmeldung o. ä., bzw. Flimmern, oder Buttons,
Schließkreuz usw. haben keine Auswirkung, weil die Ereignisse ja noch
garnicht bearbeitet werden, da die Fenstererstellung noch garnicht
abgeschlossen ist.

Es gibt nichts schlimmeres, als ein Fenster das nicht richtig reagiert!
Das ist leider bei vielen geskinnten Fenstern so, einer der Gründe warum
ich diese nicht mag :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Viele Wege führen nach Rom. In der Programmierung unendlich viele Wege.

Jeder sollte sich seine eigene regeln erstellen womit er klar kommt.
Sollte aber immer strukturiert sein und mit genügende Kommentare versorgt werden.

Ich selber verwendet bei grösseren Projekten meine eigene Tools die mir den ganzen Eventverarbeitung abnimmt. Automatisierung in Programmierung hilft ungemein.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Josef Sniatecki
Beiträge: 657
Registriert: 02.06.2008 21:29
Kontaktdaten:

Beitrag von Josef Sniatecki »

@mk-soft
Da kann man dir nur Recht geben.

@franky
franky hat geschrieben: 1. Programm Kommentarkopf
2. Konstanten
3. Globale Variablen und Stukturen (bei grossen Projekten als Include 'Global.pbi')
4. Proceduren und Funktionen
5. Main
6. DataSection
Diese Aufteilung würde ich für größere Projekte auch nutzen, denn
sonst könnten globale Variablen zu spät definiert werden. Das gleiche
gilt für Konstanten usw.

Hier habe ich noch etwas hinzugefügt:

Code: Alles auswählen

1. Programm Kommentarkopf
  1.1. Programm-Name
  1.2. Autor
  1.3. Datum
  [1.4.] Kommentar
2. Includes
3. Macros
4. Konstanten
5. Strukturen
6. Globale Variablen
7. Prozedur-Definitionen
8. Eigentliche Prozeduren
9. Hauptcodde (Main)
  9.1. Initalisierungen
  9.2. Der Code
  [9.3.] End
10. DataSection(s)
Wie gesagt/geschrieben: Kann für große Projekte gut sein. Jeder hat
seinen eigenen Stil.
PB 4.61 | Windows Vista - 32Bit
Homepage

"Wahrlich es ist nicht das Wissen, sondern das Lernen, nicht das Besitzen sondern das Erwerben, nicht das Dasein, sondern das Hinkommen, was den grössten Genuss gewährt." - Carl Friedrich Gauß
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Beitrag von TomS »

mk-soft hat geschrieben:Viele Wege führen nach Rom. In der Programmierung unendlich viele Wege.
Das streitet ja niemand ab. Was ich nicht versteht, ist, wie man einen Weg als das Non-Plus-Ultra darstellen ("Es gibt einfach nichts besseres") und auf die Frage "Warum gibt es nichts besseres?" sinngemäß mit "Ist halt so." oder "Sieht doch jeder, warum das besser ist." antworten kann.

Bis jetzt wurde eine Begründung gegen "While-Wend" angegeben, dass es evtl. Ereignisse verschluckt. Aber dafür, dass man den Eventloop in eine Procedure packt, bis auf die Übersichtlichkeit (subjektiv) nichts.

@Josef Sniatecki: Das stellt sich mir gleich noch eine Frage.
7. Prozedur-Definitionen
8. Eigentliche Prozeduren
also

Code: Alles auswählen

Declare Function.l()

Procedure Function.l()
    ;Code
EndProcedure
Das macht doch auch keinen Sinn, oder meinst du mit "Prozedur-Definitionen" etwas anderes?
Antworten