In Empire 2000 arbeite ich mit einer Template-Klasse aus dem Buch "Fortgeschrittene Perl-Programmierung". Je mehr ich damit arbeite, für desto wichtiger erachte ich es, eine solche Template-Klasse für Objekte zu haben. Nun überlege ich, diese Klasse zu überarbeiten.

Hierzu erstelle ich ein Anforderungsprofil und sehe mir dann alle vorhandenen Template-Klassen an, derer ich habhaft werden kann. Dort lerne ich noch mehr dazu und dann kann ich mir überlegen, was meine Klasse können sollte.

Anforderungsprofil #

Generelle Dinge

  • Hohe Performanz des Ganzen. Evtl. keine Ableitung, sondern Konstruktion der Klasse per Template und eval?
  • Nutzbarkeit mit einfachen, vorhandenen Hashes
  • Einfachheit aller Schnittstellen, Komplexität ggf. versteckt in der Klassendefinition
  • Kommunikation zwischen Objekten (Callback)
Format der Basisdaten
  • ganz normale Hashes sollten problemlos benutzt werden können
  • Datensätze in Arrays (wie in meiner Klasse) haben bisher auch nicht geschadet
  • Datenbankzugriff sollte möglich sein Callback-Mechanismen fallen aus, wenn ein Objekt in der Datenbank steht. Entweder ein exklusiver Lock auf die ganze Datenbank oder generell nur einen User. Hmmm....
  • Beschreibung des Objektes ggf. in Definitionssprache
  • grundsätzlich auch Funktion ohne Beschreibung
gemeinsame Objekteigenschaften
  • Initialisierung
  • Deinitialisierung
  • Speichern
  • Laden
  • Callback-System (Signals and Slots)
  • Informationen über das Objekt, seinen Typ, etc.
  • Ist es sinnvoll, mit Exceptions zu arbeiten? Wahrscheinlich ja!
  • Typüberprüfung (evtl. abschaltbar)
aufbauende Erweiterungen
  • automatische Erstellung von Tk-Oberflächen
  • evtl. automatische Erstellung von HTML-Formularen

Vergleich von CPAN-Modulen #

KlassenTemplatesImCPAN

Sinnige CPAN-Module, die benutzt werden #

Alternativen für Exception Handling:

  • Exception::Class und Error
  • Exceptions

Tags:  Perl, Templates

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-3) was last changed on 02-Jan-2011 13:19 by ThomasBayen