User Tools

Site Tools


metamod:perl_code_style

This is an old revision of the document!


Coding guidelines

These rules apply to perl and php, unless otherwise mentioned.

General rules

  • spaces instead of tabs
  • indent is 4 spaces
  • cuddled else:
    if ($a > $b) {
        $a++;
    } else {
        $b++;
    }
  • Line-length: usually <80 characters, not more than 120 chars
  • translate parameter from @_ to names in start of sub

Documentation

  • POD(perl)/Doxygen(php) API documentation for modules, close to code
  • POD(perl) documentation for scripts (pod2usage)

Name-convention

  • variables: lower case, underscore splits words
  • constants: upper case, underscore splits words
  • functions: lower case, underscore splits words
  • modules/classes: upper case first, camel case splits words

Perltidy configuration

The following Perltidy configuration can be used as a guideline for formatting the code in Metamod. Don't use perl-tidy blindly on code in particular on others code! Use perltidy for diff.

# make some defaults explicit to document the decision
--indent-columns=4
--cuddled-else
--indent-block-comments
--paren-tightness=1
--square-bracket-tightness=1
--brace-tightness=1
--block-brace-tightness=0
-nbl
-nsbl
--static-block-comments

# deviations from the default
--maximum-line-length=120
--continuation-indentation=4
--opening-brace-always-on-right
--closing-token-indentation=0

Perl Template

The following templates follows Eclipse template syntax. All expression on the form ${variable} should be replaced with actual values.

Basic module template

This is a template for basic module.

package ${name};
 
=begin LICENSE
 
METAMOD is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
METAMOD is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with METAMOD; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
=end LICENSE
 
=cut
 
use strict;
use warnings;
 
=head1 NAME
 
${name} - ${description}
 
=head1 SYNOPSIS
 
=head1 DESCRIPTION
 
=head1 FUNCTIONS/METHODS
 
=cut
 
${code}
 
=head1 LICENSE
 
GPLv2 L<http://www.gnu.org/licenses/gpl-2.0.html>
 
=cut
1;

Script

FIXME

PHP Template

FIXME

metamod/perl_code_style.1297326161.txt.gz · Last modified: (external edit)