Hi,
ich bin z.Zt. in einem Projekt, das stark LotusScript Klassen verwendet. Dabei war die Wiederverwendbarkeit geringer als erwartet oder als sie sein könnte.
Ich glaub, ich hab was herausgefunden. Die Leute packen in ihre Klassen zu viel STATE.
State sind die Instanzvariablen.
Das aus der Klasse gebildetet Objekt zog sich Informationen aus einem anderen Dokument und generierte daraus eine Email.
Aber was ist, wenn im nächsten Projekt auch Emails generiert werden, aber die Informationen aus 2 Dokumenten benötigt werden?
Ich glaub man sollte im new() der LotusScript Klasse nicht so großzügig Instanzvariablen initialisieren.
Schliesslich kann man ja die benötigten Objekte in der Parameterliste der einzelnen Methoden übergeben.
Das macht die Parameterlisten der Methoden zwar länger (und die von new kürzer), aber eben die Klasse auch flexibler.
Beispiel statt->
Class EMailTemplate
Private i_docTemplate As NotesDocument '// the template document
public sub new (docTemplate as NotesDocument)
set i_docTemplate = docTemplate
end sub
public function doSomeAction () as integer
doSomeAction = false
some stuff
end function
end class
Class EMailTemplate
public sub new ()
end sub
public function doSomeAction (docTemplate as NotesDocument) as integer
doSomeAction = false
some stuff
end function
end class
Dieser weniger-Status-in-Objekten-Stil ist auch näher an den Ideen von funktionaler Programmierung, bei der jede Funktion für die selben Parameter-Werte immer das gleiche Ergebnis zurückliefert.
Gruß Axel