summaryrefslogtreecommitdiffstats
path: root/contrib/perl5/pod/perlstyle.pod
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/perl5/pod/perlstyle.pod')
-rw-r--r--contrib/perl5/pod/perlstyle.pod277
1 files changed, 0 insertions, 277 deletions
diff --git a/contrib/perl5/pod/perlstyle.pod b/contrib/perl5/pod/perlstyle.pod
deleted file mode 100644
index bfe5b76..0000000
--- a/contrib/perl5/pod/perlstyle.pod
+++ /dev/null
@@ -1,277 +0,0 @@
-=head1 NAME
-
-perlstyle - Perl style guide
-
-=head1 DESCRIPTION
-
-Each programmer will, of course, have his or her own preferences in
-regards to formatting, but there are some general guidelines that will
-make your programs easier to read, understand, and maintain.
-
-The most important thing is to run your programs under the B<-w>
-flag at all times. You may turn it off explicitly for particular
-portions of code via the C<use warnings> pragma or the C<$^W> variable
-if you must. You should
-also always run under C<use strict> or know the reason why not.
-The C<use sigtrap> and even C<use diagnostics> pragmas may also prove
-useful.
-
-Regarding aesthetics of code lay out, about the only thing Larry
-cares strongly about is that the closing curly bracket of
-a multi-line BLOCK should line up with the keyword that started the construct.
-Beyond that, he has other preferences that aren't so strong:
-
-=over 4
-
-=item *
-
-4-column indent.
-
-=item *
-
-Opening curly on same line as keyword, if possible, otherwise line up.
-
-=item *
-
-Space before the opening curly of a multi-line BLOCK.
-
-=item *
-
-One-line BLOCK may be put on one line, including curlies.
-
-=item *
-
-No space before the semicolon.
-
-=item *
-
-Semicolon omitted in "short" one-line BLOCK.
-
-=item *
-
-Space around most operators.
-
-=item *
-
-Space around a "complex" subscript (inside brackets).
-
-=item *
-
-Blank lines between chunks that do different things.
-
-=item *
-
-Uncuddled elses.
-
-=item *
-
-No space between function name and its opening parenthesis.
-
-=item *
-
-Space after each comma.
-
-=item *
-
-Long lines broken after an operator (except "and" and "or").
-
-=item *
-
-Space after last parenthesis matching on current line.
-
-=item *
-
-Line up corresponding items vertically.
-
-=item *
-
-Omit redundant punctuation as long as clarity doesn't suffer.
-
-=back
-
-Larry has his reasons for each of these things, but he doesn't claim that
-everyone else's mind works the same as his does.
-
-Here are some other more substantive style issues to think about:
-
-=over 4
-
-=item *
-
-Just because you I<CAN> do something a particular way doesn't mean that
-you I<SHOULD> do it that way. Perl is designed to give you several
-ways to do anything, so consider picking the most readable one. For
-instance
-
- open(FOO,$foo) || die "Can't open $foo: $!";
-
-is better than
-
- die "Can't open $foo: $!" unless open(FOO,$foo);
-
-because the second way hides the main point of the statement in a
-modifier. On the other hand
-
- print "Starting analysis\n" if $verbose;
-
-is better than
-
- $verbose && print "Starting analysis\n";
-
-because the main point isn't whether the user typed B<-v> or not.
-
-Similarly, just because an operator lets you assume default arguments
-doesn't mean that you have to make use of the defaults. The defaults
-are there for lazy systems programmers writing one-shot programs. If
-you want your program to be readable, consider supplying the argument.
-
-Along the same lines, just because you I<CAN> omit parentheses in many
-places doesn't mean that you ought to:
-
- return print reverse sort num values %array;
- return print(reverse(sort num (values(%array))));
-
-When in doubt, parenthesize. At the very least it will let some poor
-schmuck bounce on the % key in B<vi>.
-
-Even if you aren't in doubt, consider the mental welfare of the person
-who has to maintain the code after you, and who will probably put
-parentheses in the wrong place.
-
-=item *
-
-Don't go through silly contortions to exit a loop at the top or the
-bottom, when Perl provides the C<last> operator so you can exit in
-the middle. Just "outdent" it a little to make it more visible:
-
- LINE:
- for (;;) {
- statements;
- last LINE if $foo;
- next LINE if /^#/;
- statements;
- }
-
-=item *
-
-Don't be afraid to use loop labels--they're there to enhance
-readability as well as to allow multilevel loop breaks. See the
-previous example.
-
-=item *
-
-Avoid using grep() (or map()) or `backticks` in a void context, that is,
-when you just throw away their return values. Those functions all
-have return values, so use them. Otherwise use a foreach() loop or
-the system() function instead.
-
-=item *
-
-For portability, when using features that may not be implemented on
-every machine, test the construct in an eval to see if it fails. If
-you know what version or patchlevel a particular feature was
-implemented, you can test C<$]> (C<$PERL_VERSION> in C<English>) to see if it
-will be there. The C<Config> module will also let you interrogate values
-determined by the B<Configure> program when Perl was installed.
-
-=item *
-
-Choose mnemonic identifiers. If you can't remember what mnemonic means,
-you've got a problem.
-
-=item *
-
-While short identifiers like $gotit are probably ok, use underscores to
-separate words. It is generally easier to read $var_names_like_this than
-$VarNamesLikeThis, especially for non-native speakers of English. It's
-also a simple rule that works consistently with VAR_NAMES_LIKE_THIS.
-
-Package names are sometimes an exception to this rule. Perl informally
-reserves lowercase module names for "pragma" modules like C<integer> and
-C<strict>. Other modules should begin with a capital letter and use mixed
-case, but probably without underscores due to limitations in primitive
-file systems' representations of module names as files that must fit into a
-few sparse bytes.
-
-=item *
-
-You may find it helpful to use letter case to indicate the scope
-or nature of a variable. For example:
-
- $ALL_CAPS_HERE constants only (beware clashes with perl vars!)
- $Some_Caps_Here package-wide global/static
- $no_caps_here function scope my() or local() variables
-
-Function and method names seem to work best as all lowercase.
-E.g., $obj-E<gt>as_string().
-
-You can use a leading underscore to indicate that a variable or
-function should not be used outside the package that defined it.
-
-=item *
-
-If you have a really hairy regular expression, use the C</x> modifier and
-put in some whitespace to make it look a little less like line noise.
-Don't use slash as a delimiter when your regexp has slashes or backslashes.
-
-=item *
-
-Use the new "and" and "or" operators to avoid having to parenthesize
-list operators so much, and to reduce the incidence of punctuation
-operators like C<&&> and C<||>. Call your subroutines as if they were
-functions or list operators to avoid excessive ampersands and parentheses.
-
-=item *
-
-Use here documents instead of repeated print() statements.
-
-=item *
-
-Line up corresponding things vertically, especially if it'd be too long
-to fit on one line anyway.
-
- $IDX = $ST_MTIME;
- $IDX = $ST_ATIME if $opt_u;
- $IDX = $ST_CTIME if $opt_c;
- $IDX = $ST_SIZE if $opt_s;
-
- mkdir $tmpdir, 0700 or die "can't mkdir $tmpdir: $!";
- chdir($tmpdir) or die "can't chdir $tmpdir: $!";
- mkdir 'tmp', 0777 or die "can't mkdir $tmpdir/tmp: $!";
-
-=item *
-
-Always check the return codes of system calls. Good error messages should
-go to STDERR, include which program caused the problem, what the failed
-system call and arguments were, and (VERY IMPORTANT) should contain the
-standard system error message for what went wrong. Here's a simple but
-sufficient example:
-
- opendir(D, $dir) or die "can't opendir $dir: $!";
-
-=item *
-
-Line up your transliterations when it makes sense:
-
- tr [abc]
- [xyz];
-
-=item *
-
-Think about reusability. Why waste brainpower on a one-shot when you
-might want to do something like it again? Consider generalizing your
-code. Consider writing a module or object class. Consider making your
-code run cleanly with C<use strict> and C<use warnings> (or B<-w>) in effect
-Consider giving away
-your code. Consider changing your whole world view. Consider... oh,
-never mind.
-
-=item *
-
-Be consistent.
-
-=item *
-
-Be nice.
-
-=back
OpenPOWER on IntegriCloud