__blackjack__ hat geschrieben: Donnerstag 31. Dezember 2020, 01:27
@Sandor: Was man in einem Modul verwenden will muss man dort auch irgendwie definieren, also entweder tatsächlich dort definieren, oder die Objekte aus einem anderen Modul importieren oder zumindest das Modul importieren und über das Modul auf die Objekte zugreifen. Es gibt keine ”projektglobalen” Definitionen die automagisch überall bekannt wären ausser den eingebauten Funktionen/Datentypen.
Und das ist auch gut so, weil es damit übersichtlicher bleibt und gleiche Namen in verschiedenen Modulen kein Problem sind. Zumindest solange man nicht mit Sternchen-Importen anfängt, was man aus genau diesen Gründen nicht macht.
Danke dir, mit Blitzmax hatte ich den Vorteil, dass ich meinen Code auf verschiedene Module aufteilen konnte, einfach der Übersichtlichkeit halber. Dann musste ich wie gesagt im "Main-Modul" einfach alle anderen Module einmalig importieren und konnte so in jedem Modul sämtliche Funktionen einfach aufrufen, selbst ohne anzugeben, in welchem Modul sich die Funktion befindet. Dadurch konnte ich jeden Namen nur einmal vergeben, stimmt, aber das ist doch einfacher, als acht mal den gleichen Namen zu haben, oder? Ich empfand das als sehr intuitiv, und bei 120.000 Zeilen Code auch recht übersichtlich.
Mit Python läuft das wohl anders. Ich dachte, ich könnte meinen Code in verschiedene Module packen, die einigermaßen in sich stimmig sind (Spiellogik, Graphisches, Spielstand laden/speichern, ich hatte sogar einfach ein Modul mit all meinen Klassen (was in Blitzmax "types" heißt, daher der Name hier)). Ich sehe noch nicht den Vorteil, die Funktionen und Klassen so stark "getrennt" zu haben, man wird doch immer in einem Modul die Funktionen und Klassen eines anderen Moduls brauchen, bzw. ansprechen müssen, sonst würde man doch gar nicht so viele verschiedene Module einbinden, und könnte stattdessen einfach ein "riesiges Modul" haben, mit allen Klassen und Funktionen für das Game.
Jetzt weiß ich aber auch, nach was ich suchen muss: Ich wusste nicht, dass auch die reinen Textdateien, in denen ich meinen Quellcode schreibe, Module heißen (Ich habe mir Module als abgekapselt vorgestellt, dass ich dort nur schwer den Code ändern kann, bzw. dieses nicht vorgesehen ist, und quasi nur fertige Module genutzt werden).
Wegen Konventionen: Hast Recht, ich werde mich künftig daran halten!