myslim, ze uzavery predevsim zprehlednuji kod
ono poouzit neco ve stylu
if ($debug) {
$get_addr = &prepare_load_addrs_from_array(@ARGV);
} else {
$get_addr = &prepare_load_addrs_from_dhcpconf();
}
while ( $addr = &$get_addr ) {
if ( &is_ftp_active($add) ) {
# save addr
}
}
je mnohem prehlednejsi a bude to nejspise i rychlejsi nez jine moznosti, nebo se mylim? ... :-)
Názory k článku
Perličky (5)
vhodnejsi priklad uzaveru?
celé vláknoRe: vhodnejsi priklad uzaveru?
celé vláknoObavam se, ze to rychlejsi nebude. Snad krome pripadu, ze si pri vytvareni uzaveru neco predpocitate.
Pokud by vam hodne zalezelo na rychlosti tak bych doporucoval neco jako :
use constant DEBUG => scalar(@ARGV);
...
sub get_addr {
if (DEBUG) {
udelej neco s @ARGV
} else {
udelej neco s dhcpconf()
}
zbytek kodu
}
Optimalizator totiz uz pri kompilaci pozna ktera vetev toho if()u neni potreba a odoptimalizuje ji i ten test.
Samozrejme pouze v pripade, ze DEBUG je definovano jako konstanta uz pred tim if()em.
uzavery se sdilenim promennych
celé vlákno#uzavery se sdilenim promennych
sub prepare_sl {
my ($last) = @_;
my ( $rs_s, $rs_l );
$rs_s = sub {
if ( $last % 2 ) { $last++ }
else { $last += 2 };
print $last."\n";
};
$rs_l = sub {
if ( $last % 2 ) { $last += 2 }
else { $last ++ };
print $last."\n";
};
return ($rs_s, $rs_l );
}
( $dalsi_sudeA, $dalsi_licheA ) = prepare_sl(57);
( $dalsi_sudeB, $dalsi_licheB ) = prepare_sl(27);
&$dalsi_sudeA(); #58
&$dalsi_sudeA(); #60
&$dalsi_licheA(); #61
&$dalsi_licheB(); #29
&$dalsi_sudeB(); #30
&$dalsi_licheA(); #63
&$dalsi_licheB(); #31
# PS: neprisel nekdo nato jak vkladat do prispevku
# na rootu prog. kod? hodilo by se <PRE> a </PRE>
# nebo aslespon
metoda "shora-dolu"
celé vláknoPerl nepouzivam, ale zarazila me veta v uvodu clanku: "metoda shora-dolu se neda pouzit na velke projekty..." (volne).
Metoda shora-dolu je pomerne ustaleny termin pro dekompozici problemu na mensi (dilci) celky, kdy se zacina nejvyssi urovni - tedy tim co chceme ziskat. Postupne pridavame dalsi vrstvy, ktere poskytuji zakladnejsi funkce az se nakonec dostaneme na sluzby poskytovane programovacim jazykem.

