metamod:perl_code_style

This is an old revision of the document!


Coding guidelines

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

  • 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
  • POD(perl)/Doxygen(php) API documentation for modules, close to code
  • POD(perl) documentation for scripts (pod2usage)
  • 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

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

This is a template for basic module.

package <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
 
<package name> - <description>
 
=head1 SYNOPSIS
 
=head1 DESCRIPTION
 
=head1 FUNCTIONS/METHODS
 
=cut
 
<your code goes here>
 
=head1 LICENSE
 
GPLv2 L<http://www.gnu.org/licenses/gpl-2.0.html>
 
=cut
1;

This template can be used for new Catalyst controllers.

package <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
 
BEGIN {extends 'MetamodWeb::BaseController::Base'; }
 
=head1 NAME
 
<package name> - <description>
 
=head1 DESCRIPTION
 
=head1 METHODS
 
=cut
 
=head2 auto
 
=cut
 
sub auto :Private {
    my ( $self, $c ) = @_;
 
    # Controller specific initialisation for each request.
}
 
=head2 index
 
 
=cut
sub index : Path("replace with absolute path") {
    my ( $self, $c ) = @_;
 
}
 
 
#
# Remove comment if you want a controller specific begin(). This
# will override the less specific begin()
#
#sub begin {
#    my ( $self, $c ) = @_;    
#}
 
#
# Remove comment if you want a controller specific end(). This
# will override the less specific end()
#
#sub end {
#    my ( $self, $c ) = @_;
#}
 
 
__PACKAGE__->meta->make_immutable;
 
=head1 LICENSE
 
GPLv2 L<http://www.gnu.org/licenses/gpl-2.0.html>
 
=cut
 
1;

FIXME

FIXME

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • metamod/perl_code_style.1299680717.txt.gz
  • Last modified: 2022-05-31 09:23:19
  • (external edit)