Andreas21 hat geschrieben:Strukturen die außerhalb des Moduls sind, sind in Modulen nicht bekannt.
Der Code im Modul ist abgekapselt.
Somit auch die Strukturen.
Muts also alle Strukturen die in den Modul gebraucht werden auch im Modul deklarieren.
Hat auch den vorteil das man wenn man Module weiter gibt, nicht auf namen von Strukturen achten muss.
Genauso wie bei Prozeduren oder Variablen namen.
Das ist ja richtig doch wäre es praktisch wen man "globale" Strukturen definieren könnte.
Der Grund dafür ist auch recht einfach, wen ich ein Projekt habe in dem Daten zwischen Modulen hin und her geschaufelt werden
dann müsste ich bei 10 Modulen auch 10 mal die Struktur neu definieren.
Das ist dann echt nervtötend wen man 100 Strukturen hat.
Allerdings wäre das noch nicht mal so schlimm da ich ja per Include einfach die Strukturdatei einbinden kann nur hier hat man wieder
das Problem das man auch einen Pfad angeben muss und damit der im ganzen Programm gleich ist gibt man diesen
am besten über eine zentrale Konstante an .....
Ach ja das geht ja nun auch nicht
Die Sache die mich halt etwas stört ist das man diese Zwei dinge die sich nach ihrer Definition eh nicht ändern lassen nicht global nutzen lassen.
Das ist von daher auch etwas merkwürdig da ich im ganzen Programm zugriff auch alle PB eigenen Konstanten habe egal ob Modul oder nicht,
aber auf eigene hab ich keinen.
Wie gesagt Abkapselung hin oder her aber ich finde es macht keinen sinn den Zugriff auf Datentypen und Konstanten zu verweigern.
Und das Argument das man so einfach das Modul weitergeben kann und verwenden ohne sich Gedanken über Kollisionen machen zu müssen
ist eher schwach.
Mal ehrlich, wen ich ein großes Projekt betreibe dann gibt es auch Kommunikation zwischen den Teammitgliedern oder Teammeetings bei
denen man sich abspricht und kann Kollisionen vermeiden.
Oder wen man ein PlugIn für eine Software schreibt so ist diese eigentlich immer gut genug Dokumentiert um so was zu vermeiden.
Ich sage ja nicht das man es generell zulassen sollte sondern eher so das man sie als Global definieren kann eventuell so in der Art.
Code: Alles auswählen
Globalisation
Enumeration
#Test_1
#Test_2
EndEnumeration
Structure Test
a.i
b.i
EndStructure
EndGlobalisation