dougm 01/01/02 11:56:09
Added: pod modperl_style.pod
Log:
style guide
Revision Changes Path
1.1 modperl-2.0/pod/modperl_style.pod
Index: modperl_style.pod
===================================================================
=head1 NAME
mod_perl_style - style guide for mod_perl code
=head1 DESCRIPTION
This document
=head1 C code
mod_perl C code follows the Apache style guide:
http://dev.apache.org/styleguide.html
=head1 XS code
C code inside xs modules also follows the Apache style guide.
=head1 Perl code
Perl code also follows the Apache style guide, in terms of
indentation, braces, etc.
=head2 Global Variables
=over 4
=item avoid globals in general
=item avoid $&, $', $`
See Devel::SawAmpersand's README that explains the evilness. Under
mod_perl everybody suffers when one is seen anywhere since the
interpreter is never shutdown.
=back
=head2 Modules
=over 4
=item Exporting/Importing
Avoid too much exporting/importing (glob aliases eat up memory)
When you do wish to import from a module try to use an explict list or
tag whenever possible, e.g.:
use POSIX qw(strftime);
When you do not wish to import from a module, always use an empty list
to avoid any import, e.g.:
use IO::File ();
(explain how to use Apache::Status to find imported/exported
functions)
=back
=head2 Methods
=over 4
=item indirect vs direct method calls
Avoid indirect method calls, e.g.
don't say:
new CGI::Cookie
say:
CGI::Cookie->new
=back
=head2 Inheritance
=over 4
=item Avoid inherting from certain modules
Exporter
To void inherting B<AutoLoader::AUTOLOAD>
instead of this:
@MyClass::ISA = qw(Exporter);
use this:
*import = \&Exporter::import;
=back
=head2 Symbol tables
=over 4
=item %main::
stay away from main::
=back