Schrift
[thread]8012[/thread]

Wann sind Prototypen sinnvoll (Seite 2)

Leser: 2


<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten
betterworld
 2006-05-24 03:44
#66501 #66501
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Leere Prototypen benutze ich auch manchmal, um Konstanten zu erzeugen (so wie mit use constant). ("Constant Functions" in perlsub)

Mit Prototypen kann man eine ganze Menge lustige Sachen anstellen, aber sie sind wohl wirklich nicht dazu gut, aus "gutem Stil" bei jeder Funktion eingesetzt zu werden. Und leserlich finde ich sie auch nicht gerade. Wenn man Leserlichkeit erreichen will, sollte man die Argumente lieber in Kommentaren erlaeutern.
ptk
 2006-05-24 10:48
#66502 #66502
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=betterworld,24.05.2006, 01:44]Leere Prototypen benutze ich auch manchmal, um Konstanten zu erzeugen (so wie mit use constant). ("Constant Functions" in perlsub)[/quote]
Konstanten vermeide ich mittlerweile: wenn Konstanten nicht ganz so konstant sind und von Zeit zu Zeit geändert werden, dann funktioniert ein Neuladen mit Apache::Reload nicht mehr. Und ich bin zu oft auf das Problem mit Konstanten als Hashkeys hereingefallen.

Aber wenn man wirklich Performance braucht, dann sind Konstanten ganz nett.
renee
 2006-05-24 11:01
#66503 #66503
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Kannst Du erläutern, welche Probleme mit Konstanten als Hashkeys das waren?

Ich benutze kaum Konstanten, daher bin ich bisher auf keine Probleme gestoßen...
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/
ptk
 2006-05-24 11:21
#66504 #66504
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Code: (dl )
1
2
use constant BLA => "foo";
$hash{BLA} = "...";

macht nicht das, was man auf dem ersten Blick denken könnte.
sri
 2006-05-24 11:44
#66505 #66505
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=ptk,24.05.2006, 09:21]
Code: (dl )
1
2
use constant BLA => "foo";
$hash{BLA} = "...";

macht nicht das, was man auf dem ersten Blick denken könnte.[/quote]
Hmm, es macht genaus das was ich erwartet habe.
Autoquote, genau wie...
Code: (dl )
{ BLA => 'foo' }.


Konstanten benutze ich generell nur zusammen mit arrays nicht mit hashes.
Code: (dl )
1
2
sub BLA () { 23 }
$array[BLA] = '...';
renee
 2006-05-24 11:50
#66506 #66506
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Achso... stimmt, das ist etwas blöd.
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/
pq
 2006-05-24 13:34
#66507 #66507
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ich benutze in HTC schon eine mene konstanten, als array-indizes zumeist.
es gibt zwar anhänger, die Readonly propagieren (Conway), aber ich zumindest
habe die nachteile von konstanten noch nicht verstanden. das mit den
hash-keys ist klar, aber wenn man's weiß...

wenn ich all die konstanten, die ich benutze, in Readonly verwandeln
würde, dann könnte ich das modul wohl in die tonne werfen. es
ist einfach langsamer, da konstanten im gegensatz zu Readonly variablen
einwach wegoptimiert werden.\n\n

<!--EDIT|pq|1148463354-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
bloonix
 2006-05-24 21:21
#66508 #66508
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=ptk,24.05.2006, 09:21]
Code: (dl )
1
2
use constant BLA => "foo";
$hash{BLA} = "...";

macht nicht das, was man auf dem ersten Blick denken könnte.[/quote]
hallo, ich kann nicht ganz folgen, was du - und renee - damit meint.

kann mir das jemand erklären?
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
renee
 2006-05-24 21:28
#66509 #66509
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
BAR wird in dem Fall nicht als Konstante ausgewertet, d.h. dass nicht $hash{foo} ausgegeben wird, sondern nach einem Schlüssel "BAR" gesucht wird - den es natürlich nicht gibt...
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/
betterworld
 2006-05-24 22:46
#66510 #66510
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Man kann ja $hash{+BAR} schreiben. Ich sehe da jetzt eigentlich nicht so das große Konstanten-Problem. Schließlich hat man das Problem ja auch mit $hash{shift} und ähnlichen Sachen. Und das ist auch gut so. Sonst kaeme eines Tages in Perl 5.10.77 das neue Schluesselwort "age", und niemand kann mehr Code von frueher verwenden, in dem $hash{age} steht.
<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten



View all threads created 2006-05-23 14:33.