[vienna.pm] Programmierstil

Roland Bauer Roland.Bauer at mediaprint.at
Wed May 31 03:21:21 CDT 2000


* * * vienna-pm-list * * *


In der Mailingliste perl5-porters at perl.org eine Gegenueberstellung
zweier extremer Programmierstile:

A) Perl-typisches Arbeiten mit Defaultwerten (zB: $_, @_) und
B) alles ausprogrammieren, ohne die Perl-Besonderheiten zu nutzen.

--------------------------------------------------------------------------------------------------------
Von: 	Tom Christiansen <tchrist at chthon.perl.com>
An:	Horsley Tom <Tom.Horsley at ccur.com>
Datum: 	26.05.00 17.11 Uhr
Betreff: 	Re: Thoughts on maintaining perl 

>Things like ... implicit $_ or @_

Used judiciously, implicit $_ produces more readable code
than explicit variable use.  It's a pronoun.  Imagine speaking
English without any pronouns.  But long stretches without
antecedents will confuse just as short ones without pronouns
will annoy.

For example, this is *incredibly* clearer:

    while (<>) {
        next if /^=for\s+(index|later)/;
        $chars += length;
        $words += split;
        $lines += y/\n//;
    }

than using the the utterly obfuscated IMPLICIT NONE version:

	if (@ARGV == 0) { 
	    @ARGV = ('-');
	}

    ARGUMENT:
	while (@ARGV != 0) {
	    $ARGV = shift(@ARGV);        
	    unless (open(ARGV, $ARGV)) {
		print STDERR "Can't open $ARGV: $!\n";
		next ARGUMENT;
	    }
    LINE: 
	    while (defined($line = readline(*ARGV))) {
		if ($line =~ /^=for\s+(index|later)/) {
		    next LINE;
		} 
		$chars = $chars + length($line);
		$words = $words + split(' ', $line);
		$lines = $lines + ($line =~ y/\n//);
	    }
	}

The former is incredibly easier to read, to write, and to maintain
than the latter, which is the kind of painful crap you'd expect a
Pascal or Python programmer who didn't actually know Perl to produce.

Use $_ as the implicit pronoun.  It's good for you.  Counteridiomatic
Perl is *not* helpful to anyone.

next ARGUMENT, please. :-)

--tom
--------------------------------------------------------------------------------------------------------


###
You are subscribed to vienna-pm-list as "Roland Bauer" <Roland.Bauer at mediaprint.at>
http://www.fff.at/fff/vienna.pm/



More information about the Vienna-pm mailing list