Mein Senf dazu ;)
Ausgerechnet mit dem vi schrieb ich um 2001 mein längstes CGI-Script mit gut 1000 Zeilen. Es gab damals Gründe, jede einzelne Webanwendung als eigenständiges CGI-Script zu schreiben, aber heute würde ich ebendiese Gründe zuerst abstellen, denn das spart einen Haufen Arbeit (Stichwort Redundanzen).
Ein anderer Grund zum Auslagern von Code ist nicht nur der Compile-Overhead, sondern auch die Wiederverwendbarkeit (verschiedene Klassen können dieselben Methoden nutzen) und die Tatsache, dass wohl in den seltensten Fällen aldi schönen Funktionen/Methoden bei einem Programmdurchlauf tatsächlich alle aufeinmal gebraucht werden.
Ein schönes Beispiel ist meine Dump & die()-Methode, die ich gelegentlich beim Entwickeln aufrufe um zu sehen, wie eine bestimmte Datenstruktur oder ein Objekt aussieht:
1
2
3
4
5
6
7
8
9
10
11
12
13
use Data::Dumper;
use strict;
use warnings;
use Carp;
sub dd{
my $self = shift;
my $ref = shift || $self;
croak Dumper $ref;
};
1;
D.h. auch: Ein
use Data::Dumper; muss im Regelbetrieb nicht immer mitgeschleppt werden (O-Ton CTO: 'Ich will im SVN keine Scripten oder Module sehen, wo
use Data::Dumper; drinsteht!!!').
Das Stichwort zum Auslagern von Methoden/Funktionen lautet
AUTOLOAD und ob Du den (default)AutoLoader verwendest, oder eine eigene
sub AUTOLOAD{} bleibt Dir überlassen.
Eine weitere Überlegung betrifft Funktionen/Methoden, die grundsätzlich immer aufgerufen werden: Evntl. lässt sich damit ein Interface implementieren. Hierzu hilft
my $coderef = $instanz->UNIVERSAL::can('methodname') beim Prüfen, ob die jeweilige Interface-Methode in der Subklasse definiert ist, wenn ja, wird sie ausgeführt (
$instanz->$coderef), ansonsten eben nicht.
MfG
//Edit: Nach erneuter Überarbeitung meines Frameworks hat meine package main nun unter 300 Zeilen (vorher waren es ca 600 Zeilen).
PS: Welche Aufgabe hat denn das Script?
Last edited: 2015-01-13 09:07:55 +0100 (CET)