Struppi: Parameterübergabe

Beitrag lesen

Ich hab bis jetzt nicht geantwortet, weil die Frage eigentlich den Rahmen eines Forums sprengt. Ich versuch's mal

Es werden diverse Unterroutinen aufgerufen der Art:
...
header($farbe,$format,$url,$kopfzeile,...);
...
inhalt($farbe,$inhalt,$url,...);
...
fehlermeldung($farbe,$format,$url,$fehlerart,$fehlertext,.......);

Ich gehe mal davon aus, dass wir von einem CGI Programm sprechen, du willst also eine Internetseite ausgeben. Sicherverwendest du schon das CGI Modul mit dem du leicht die HTML Ausgabe zusammenbasteln kannst. Wenn das Projekt größer ist, empfiehlt es sicher aber mit einem Templatesystem zu arbeiten z.b. HTML::Template, dann musst du dir in deinem Perlskript keinen Gedanken mehr um die HTML Ausgabe machen.

Wenn ich das Modulkonzept richtig verstehe, könnte ich jetzt ein Modul mymod.pm erstellen mit den Routinen

  • header
  • inhalt
  • fehlermeldung
    ...
    und alle obigen Variablen in EXPORT angeben.

Das wäre ein Modul ja (aber nicht mit Objektorientierter Programmierung verwechseln, damit hat es überhaupt nichts zu tun). Die Frage die du dir stellen musst ist: welches sind Modulvariabeln, also nur dort notwendig?
So wie du sie oben beschrieben hast, machen die Funktionen meiner Meinung viel zuviel. Auch Exportieren sollte man sparsam, damit verschmutzt du dir den Namensraum des Skriptes und wirst Schwierigkeiten beim Fehlersuchen bekommen.

Du solltest Funktionalität trennen, konkret läßt sich nur mit den Namen der Parameter, natürlich nicht viel sagen, aber z.b. eine Funktion die Fehlermeldung heißt, würde ich nur den Text übergeben.

Aber wenn du wirklich der Meinung bist dass die Funktion soviele Parameter braucht, dann heißt dein Objekt Fehlermeldung und hat die diversen Eigenschaften wie farbe, format, url, usw.

Damit könnte ich aufrufen
mymod::header
mymod::inhalt
mymod::fehlermeldung
d.h. ohne die Parameterangabe im Aufruf?

Nein, so nicht.

Module sind in erster Linie dazu da, häufig verwendete Funktionen auszulagern, damit du diese auch an anderer Stelle einbinden und verwenden kannst, außerdem kannst du Variabeln vor dem Zugriff aus dem Hauptprogramm kapseln.

Noch besser wird aber die Sache wenn du mit Objekten arbeitest, dann musst du keine Funktionen exportieren, da dann alles Funktionen an das Objekt gebunden sind.

Struppi.