Domino 9 und frühere Versionen > Entwicklung

Deklarationen: wie macht man's richtig richtig?

(1/3) > >>

cpo:
Hallöchen,
ich oute mich jetzt und hier mal als Nicht-IT-Studierte, die mit Notes 3 groß geworden ist und dann irgendwann mal Script gelernt hat.
Soll heißen, dass ich z.b. das Dim session as New NotesSession einfach mal immer getippt habe, ohne genau zu raffen, warum, weshalb und wieso  ::)

Mittlerweile scripte ich zwar fast nur noch, mir fehlt aber immer noch der ultimative Durchblick bei den Deklarationen.

Wie macht ihr das? Dimt ihr die session in jeder library neu? Nutzt ihr Private? Wohin mit Objekten, die man ständig und überall braucht? (z.B. die aktuelle datenbank oder irgendeine referenzierte)

CPO

Glombi:
Hi, ich fang mal an...
Generell:
Ich habe für mich entschieden, Dim und Set immer zu trennen.
Das Dim kommt immer in Declarations und Set dann wo man/frau es braucht.

Was oft Sinn macht (muss halt von DB zu DB geprüft werden):
Häufig verwendete Objekte wie NotesSession und NotesDatabase können in einer Script Library dimensioniert und dort im Initialize gesetzt werden.
Als Name nehme ich dann sowas wie
dim GLOBALS_session as NotesSession
dim GLOBALS_db as NotesDatabase

wobei "GLOBALS" den Name (zumindest eindeutiges Präfix) der Library ist. Dann weiss man später im Script immer, wo die Dinger herkommen.

In Masken macht es Sinn, unter (Globals) folgendes zu deklarieren:
dim uidoc as NotesUIDocument
dim doc as NotesDocument

und das dann im Postopen/Queryopen zu setzen.

Tip:
Alle Objekte, die in Script Libraries unter (Declarations) deklariert werden und die NUR INNERHALB der Library verwendet werden, als Private deklarieren. Sonst kann es Stress geben, wenn man nachträglich eine Library bspw. in eine Maske einbindet und gleiche Namen verwendet.

Bei der Verwendung von UI-Klassen ist bzgl. Script Libraries folgendes anzumerken:
Alle Objekte, Functions etc. die UI-Objekte verwenden, behandle ich in einer eigenen Script Library. Es gibt nämlich die Einschränkung, dass diese Libaries nicht in servergestützten Agenten verwendet werden können (sonst kommt Error Use lsx oder sowas).

to be continued...

Andreas

cpo:
hmpf :-\
dann mache ich irgendwas noch falsch...

Ich hatte mir das nämlich auch genau so überlegt: eine lib in der z.B. eine Datenbank auf die ich immer mal wieder referenziere gedimt und gesetzt wird. Dim in den Declarations, set im initialize.

Der Plan war dann, EINMAL initialisieren zu lassen und danach meine MAIN_dbAddress IMMER Verfügung zu haben.
Das klappt aber leider so nicht... Ich spare mir zwar Tipparbeit, die Globals beiben aber nicht Global...
Das wiederum bedeutet, dass ich ständig die Datenbank neu setzte und das bedeutet, dass es grottig langsam wird... :P
Mache ich da noch einen Denkfehler?

Bei den UIObjekten habe ich übrigens festgestellt, dass man das ein bisschen austricksen kann, indem man sie als Variant dimt und den set bei bedarf macht. Machte aber nur in dem Fll Sinn, weil in einer lib mit 1000 Funktionen nur eine war, die UI brauchte.

Glombi:
Hi,
Du machst aber überall ein
Use "Name der Script Library"
wenn Du "MAIN_dbAddress" brauchst, oder?

Wegen der UI-Objekte: Ja, das mit Variant geht (macht Lotus auch im Mail). Finde ich persönlich aber nicht so schön.

Andreas

ata:
... Variant verwende ich, wenn ich rekompilieren muß...

ata

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln