Autor Thema: Scriptbibliotheken und Object Declarationen  (Gelesen 2476 mal)

Offline FrankLU

  • Aktives Mitglied
  • ***
  • Beiträge: 116
  • Geschlecht: Männlich
Scriptbibliotheken und Object Declarationen
« am: 18.11.16 - 15:20:18 »
Hallo!

Ich habe weniger ein (für mich unlösbares) Problem als eine generelle Frage an die Profis:

Ich habe früher als Anfänger in der LS-Programmierung immer alle Variablen in der jeweiligen Funktion einer Script Library definiert. Irgendwann kam ich dann auf die Idee, Objekte und Variablen, die ich in vielen/allen Funktionen brauche, in den (Declarations)-Teil der Library zu packen. Soweit so gut.

Nun bin ich aber in der Situation, in einer Library "A" Funktionen aus einer zweiten Library "B" verwenden zu wollen, was aber zu Fehlern bei der Use-Funktion führt, weil  namensgleiche Variablen und Objecte in beiden Librarys im (Declaration)-Teil definiert sind.

Wie löse ich das Problem am besten? Ändere ich alle doppelt vorkommenden Objekt- und Variablennamen in der "kleineren" Library "B" ab? Oder schreibe ich alle doppelten Deklarationen in die einzelnen Funktionen von "B"? Oder erstelle ich eine weitere Library "C", in der ich nur deklariere und diese Library "C" in "A" und "B" einbinde? Das "Transitive" aufzuheben, also "Private" Librarys zu haben, gibt es ja wohl nicht.

Wie macht ihr das? Verwendet Ihr "public names"?

Liebe Grüße aus der Pfalz
Frank
Frank Lohöfer
MD Medicus Holding GmbH
Client (User): 12.0.1
Client (Admin): 12.0.1
Server: 9.0 auf Linux

Mitch

  • Gast
Re: Scriptbibliotheken und Object Declarationen
« Antwort #1 am: 18.11.16 - 15:46:52 »
Heyho,

was spricht denn dagegen die Variablen "private" zu machen?

Dann sind die pro Bibliothek global verfügbar, überschreiben sich aber nicht mit gleichnamigen, privaten Variablen aus anderen Bibliotheken...

Gruß,

Mitch

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: Scriptbibliotheken und Object Declarationen
« Antwort #2 am: 18.11.16 - 17:33:32 »
Variablen global zu deklarieren, kann nach hinten losgehen.
Globale variablen in einer script lib sind auch nicht der Knaller, aber wenn man es halbwegs übersichtlich hält, dann geht das achon.

Ich persönlich nehme zunächst IMMER das option public aus winer neuen sceipt lib raus. Damit sind alle dort deklarierten Variablen ( auch die global definierten ) zunächst immer privat. D.H., sie sind innerhalb der script lib verwendbar und kollidieren nicht mit namensgleichen Deklarationen in anderen verwendeten libs.
Die methoden, klassen oder Properties, die ich lib übergreifend verwenden möchte, deklariere ich dann explizit als public.

Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Scriptbibliotheken und Object Declarationen
« Antwort #3 am: 21.11.16 - 08:25:04 »
Also prinzipiell verwende ich einige Variablen global, die ich wirklich immer wieder brauche, und die auch immer das selbe bedeuten (aktuelle Session, aktuelle Datenbank)... Das Problem: Bei einer globalen Variablen weiß man nie, ob nicht jemand in einer ganz anderen Routine den Wert der Variablen verändert...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline thkn777

  • Aktives Mitglied
  • ***
  • Beiträge: 176
Re: Scriptbibliotheken und Object Declarationen
« Antwort #4 am: 21.11.16 - 16:54:50 »
mal so, mal so  ;)

Meist versuche ich, ohne globale/public Variable auszukommen. Damit sind die in der ScriptLib enthaltenen Prozeduren/Funktionen maximal "gekapselt" und ich brauch' mir um nichts Sorgen zu machen. "Option Public" rausnehmen hilft da natürlich auch. Wenn ein gewisses Maß an Komplexität abzusehen ist, baue ich Klassen mit Methoden und Gettern/Settern.

Wann globale Variable? --> Wenn Performance Prio 1 ist. Ja, man muss aufpassen und ja, es ist (manchmal) nicht wirklich schön, aber man kann eben nicht alles haben  ;)

Th.

Offline PromITheus

  • Aktives Mitglied
  • ***
  • Beiträge: 137
Re: Scriptbibliotheken und Object Declarationen
« Antwort #5 am: 25.11.16 - 07:47:18 »
Ich komme mit folgender Vorgehensweise gut zurecht:

Es handelt sich bei mit immer um Klassen die aneinander vererben. Es gibt eine Basisklasse mit vielen Standardvariablen (und Methoden) als Public. So wie Thorsten schon beschrieben hat für z.B. Session, Dokument, Datenbank usw.. Diese Variablen muss man so in den Unterklassen nicht immer neu definieren.

Mit der Zeit kommen zwar ein paar Variablen zusammen, allerdings erhält man direkt beim Schreiben im Designer Meldung, falls man mal versehentlich in einer Unterklasse eine Variable neu definieren will "Member declared in a parent class". Du musst dir halt nur eine vernünftige Vererbungsstruktur ausdenken.
« Letzte Änderung: 25.11.16 - 07:49:16 von PromITheus »
Gruß Marcel

Offline FrankLU

  • Aktives Mitglied
  • ***
  • Beiträge: 116
  • Geschlecht: Männlich
Re: Scriptbibliotheken und Object Declarationen
« Antwort #6 am: 28.11.16 - 16:52:50 »
Ich danke Euch sehr für die Ansichten und Meinungen!

Auf die Idee, das "Option Public" aus der Library herauszunehmen, bin ich natürlich nicht gekommen. Da war ich wohl etwas betriebsblind.  ::)

Danke nochmals!

Grüße aus der Pfalz
Frank
Frank Lohöfer
MD Medicus Holding GmbH
Client (User): 12.0.1
Client (Admin): 12.0.1
Server: 9.0 auf Linux

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz