Jeder Programmierer hat ja wiederverwendbare Routinen, und lagert diese wohl in ScriptLibraries aus.
Ich habe mir angewohnt, folgende Basis-ScriptLibs zu haben:
- LibStandard (Sämtliche Backend-Routinen um Arrays zu behandeln, Stringfunctions, DateTime-Functions, ErrorHandling-Routinen, etc.)
- LibStandardUI (sämtliche allgemein verwendbare UI-Routinen)
- LibStandardNotesAPI (Routinen, die die NotesAPI verwenden, z.B. ProgressBar)
- LibStandardWinAPI (Routinen, welche die WinAPI verwenden, z.B. BrowseFolder)
- .. weitere individuelle Libs
Die LibStandard wird in den anderen Libs immer per Use "LibStandard" eingebunden.
Außerdem werden alle oben erwähnten Libs in all meine DB's kopiert.
Die LibStandard brauche ich praktisch überall (Masken, Views, Agents, etc.).
Bei Bedarf kommt dann noch der Rest hinzu. Applikationsspezifische Libs kommen in der Regel in:
- LibApplication
- LibApplicationUI
- LibApplicationNotesAPI
- LibApplicationWinAPI
Wobei auch all diese Libs wieder ein Use "LibStandard" enthalten.
Wenn ich nun in einer Maske z.B. die 'LibApplicationUI' brauche, dann steht in der Maske:
Use "LibStandard" '(weil eh IMMER dabei)
Use "LibApplicationUI"
Aber dadurch werden ja Libs mehrfach geladen (in diesem Beispiel die "LibStandard" doppelt).
Lässt sich das sinnvoll vermeiden, ohne die Übersicht zu verlieren? Gerade die Kombination von Libs kann ja da schnell mal ein mehrfaches Laden von Libs hervorrufen, andererseits soll die "Gliederung" IMHO möglichst durchschaubar und einfach bleiben.
Ich habe auch schon gesehen/gelesen, dass Leute Container-Libs verwenden. Also Libs, die keinen Code enthalten, sondern nur Use statements, um Libs einzubinden. Ich weiß aber auch nicht, ob mich das wirklich weiterbringt.
Wie ist da Eure Strategie? Was würdet Ihr empfehlen?
Meine "LibStandard" enthält aktuell etwa 80 subs/functions + ein paar Klassen. Laded aber sehr schnell.