Schrift
[thread]6750[/thread]

Allgemeine Fragen zum "richtigen Script"



<< >> 5 Einträge, 1 Seite
renee
 2005-03-01 10:38
#52213 #52213
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Von mir bekommst Du auf die meisten Fragen ein klares "kommt darauf an"!

Die meisten Punkte, die Du angesprochen hast, sind von Vorteil - nicht wegen der CPU-Last - sondern weil es Dein Skript leichter wartbar macht. Wenn irgendwoch doch ein Fehler auftaucht, kannst Du bei Einrückungen schneller Deinen Code durchsuchen!

Auch die Einteilung in Subroutinen macht Sinn. Zum einen macht es Deinen Code wieder leichter wartbar, weil man schneller die Subroutine eingrenzen kann, in der ein Fehler auftritt. Und wenn Du einen Designtechnischen Fehler hast, brauchst Du - wenn Du die Funktionalität mehrmals im Skript verwendest - nur eine Sub zu ändern und nicht an 20 Stellen im Code. Außerdem wird so weniger Speicher benötigt, weil Du die gleiche Funktionalität, die Du vorher 20 mal im Code hast, nur noch einmal schreiben musst.

Eine recht elegante Lösung, um die benötigte Sub direkt anzusprechen ist, vorher einen Hash zu machen, in dem Du die Funktionalitäten festlegst. Beispiel:
Code: (dl )
1
2
3
4
5
6
7
 my %hash = (edit => \&edit_file,
save => \&save_file,
#...
);

my $action = 'edit';
$hash{$action}->(); # jetzt wird die Subroutine aufgerufen


So sparst Du Dir etliche if-Abfragen. Man sollte aber darauf achten, dass man Abfragt, ob eine Hasheintrag existiert, wenn nein, dann eine default-Funktion aufrufen.

Ob man die Funktionalitäten in eigene Skripte auslagert, hängt auch davon ab, wie groß die sind und wie unabhängig. Solltest Du diese Funktionalität in mehreren Deiner Skripte gebrauchen, so ist das Schreiben eines eigenen Moduls für diese Funktionalität sehr sinnvoll!

Wenn Du aber nur zehn Subs in dem Stil von
Code: (dl )
sub eins{ print "Hallo\n";}
hast (ist jetzt etwas übertrieben), dann ist ein Auslagern in ein Modul oder Skript sinnlos!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Crian
 2005-03-01 12:16
#52214 #52214
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Zu der Frage zu den Einrückungen empfehle ich Dir perldoc perlstyle zu lesen.
Mir sind Einrückungen sehr wichtig, "komisch" eingerückter Code wird von mir immer erstmal "normalisiert" (entweder von Hand bei kleinen Stücken oder mit perltidy), sonst kann ich meist gar nicht gut etwas dazu sagen.

Zu den Aufteilungen in Funktionen und Modulen kann ich mich meinen Vorrednern nur anschließen. Bei mir ist das meist ein fließender Prozess. Eine Funktion wächst und wächst und wenn sie eine kritische Grenze überschreitet oder wenn Teile einfach nach Auslagerung in Funktionen "schreien", dann lager ich sie aus.

Man muss eigentlich nur ein gutes Gefühl bei dem Code haben, den man geschrieben hat, wenn man sich denn ein solches Empfinden (richtig) antrainiert hat.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
oruebe
 2005-03-01 09:56
#52215 #52215
User since
2004-07-09
46 Artikel
BenutzerIn
[default_avatar]
Hallo mal wieder,

ich habe schon einige "ganz wilde" sripts geschrieben und bisher alles ans Laufen gebracht was ich haben wollte. Ob das nun aber sehr "CPU-Freundlich" ist stelle ich mal ganz deutlich in Frage.

Alles, was ich über Perl weiß habe ich aus fertigen Scripts abgeguckt und dann "verstanden" und auf diese Art und Weise meine eigenen Script geschrieben.

Einige Fragen beantworten mir fertige Scripts aber nicht:

Ist es Sinnvoll, einzelne Abschnitte mit TABS "anzuordnen" oder dienst dies nur der besseren Übersicht? Ich denke eher letzteres aber wer weiß?!?

Ich habe sehr viele ineinander verschaltete Abfragen und Reaktionen. Ist es egal oder macht es einen Unterschied, wenn ich einzellne Schritte als SUBS anlege oder kann ich die vielen Schritte direkt über ifs und thens schreiben?
Beispiel: Ein Script kann 10 Aufgaben erfüllen. Ich habe einfach alle 10 Aufgaben untereinander weggeschrieben und frage nun vor jeder aufgabe ab, ob diese ausgeführt werden soll oder nicht. Ist es besser, wenn ich alle 10 Aufgaben als einzelne SUBS definiere und dann oben direkt die entsprechende Aufgabe abfrage und das dazugehörige SUB aufrufe? Oder macht es eher Sinn für jede dieser 10 Aufgaben ein eigenes Script zu erstellen?

Danke und Gruß,
Oliver
Taulmarill
 2005-03-01 12:01
#52216 #52216
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
ich kann renee hier nur zustimmen. ergänzend möchte ich dir noch das lesen eines strukturierten textes empfehlen. wenn du schon einiges aus script "herausgelesen" hast, kann ich dir das Kamelbuch emfehlen. "Kamelbuch" ist die in der community (nicht nur hier, sondern international) gebräuchliche Bezeichnung für ein bestimmtest buch, nämlich "Programmieren mit Perl" vom O'Reilly Verlag. auf die dauer ist das wesendlich besser als sich einfach nur tricks aus vorhandenen scripten abzugucken.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
renee
 2005-03-01 13:50
#52217 #52217
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
ist keine CGI-Frage *schieb*
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 5 Einträge, 1 Seite



View all threads created 2005-03-01 10:38.