[Nagiosplug-devel] Perl guidelines

Andreas Ericsson ae at op5.se
Tue Nov 23 00:24:06 CET 2004


Ton Voon wrote:
> Andreas,
> 
> This makes sense to add. I don't think you need permission as I think 
> the whole Perl book is generated from the perldoc supplied with perl and 
> that is under an Artistic or GPL license. Since you have credited the 
> original source, that should be sufficient. In CVS now.
> 

The book isn't autogenerated, so I actually did need permission, but I 
got it so that doesn't matter anyway. Just thought I'd let you know.

> While we are talking about guidelines, what about following our 
> developer guidelines (section 8.1):
> 
> Patches should be submitted via  SourceForge's  tracker system for 
> Nagiosplug patches and be announced to the nagiosplug-devel mailing list.
> 

I get 2 second rta's to sourceforge frequently, so I try to use it as 
little as possible. Sorry about that.

> :)
> 
> Ton
> 
> 
> On 19 Nov 2004, at 11:42, Andreas Ericsson wrote:
> 
>> Perl scripts lack uniform guidelines as to their indentation and 
>> coding styles. I've written up some to be included in the CODING 
>> document distributed with the CVS distribution. The text is borrowed 
>> (with modifications) from the O'Reilly book "Programming Perl".
>>
>> I have just now written O'Reilly asking permission to include the text.
>>
>> Patch included against latest CVS.
>>
>> -- 
>> Andreas Ericsson                   andreas.ericsson at op5.se
>> OP5 AB                             www.op5.se
>> Lead Developer
>> Index: CODING
>> ===================================================================
>> RCS file: /cvsroot/nagiosplug/nagiosplug/CODING,v
>> retrieving revision 1.2
>> diff -u -r1.2 CODING
>> --- CODING    9 Feb 2003 12:54:01 -0000    1.2
>> +++ CODING    19 Nov 2004 11:42:07 -0000
>> @@ -2,7 +2,9 @@
>>  code that is consistent with the existing core plugins.
>>
>>  The primary goals of these standards are internal consistency, and
>> -readability in a wide range of environments.
>> +readability in a wide range of environments, as well as the mental 
>> welfare
>> +of plugin developers.
>> +
>>
>>  1. C Language Programming
>>
>> @@ -33,6 +35,83 @@
>>  e) The opening brace of an if or while block is on the same line as
>>  the end of the conditional expression (the '-br' option).
>>
>> +
>>  2. Perl Language Programming
>>
>> -<To Be Written>
>> +Taken from the O'Reilly book "Programming Perl" (3rd edition, pages 
>> 604-606) with
>> +modifications for clarity and to cohere with C coding standards.
>> +
>> +*) Always check the return code of system calls.
>> +
>> +a) Use tab indentation.
>> +
>> +b) Put space before the opening brace of a multiline block.
>> +
>> +c) A short block may be put on one line, including braces.
>> +
>> +d) Never omit the semicolon.
>> +
>> +e)  Surround most operators with space.
>> +
>> +    $x = 5;    # do this
>> +    $y=5;      # don't do this
>> +
>> +f) Surround a "complex" subscript (inside brackets) with space.
>> +
>> +g) Put empty lines between chunks of code that do different things.
>> +
>> +*) Always check the return code of system calls.
>> +
>> +h) Put a newline between closing brace and else or elsif.
>> +
>> +i) Do not put space between a function name and its opening parenthesis.
>> +
>> +j) Do not put space before a semicolon.
>> +
>> +k) Put space after each comma.
>> +
>> +l) Break long lines after an operator (but before 'and' and 'or', 
>> even when
>> +spelled as && and ||)).
>> +
>> +*) Always check the return code of system calls.
>> +
>> +m) Line up corresponding items vertically.
>> +
>> +n) Use redundant parentheses only where it increases readability.
>> +
>> +o) An opening brace should be put on the same line as its preceding 
>> keyword,
>> +if  possible; otherwise, line them up vertically.
>> +
>> +    while ($condition) {
>> +        # do something
>> +    }
>> +
>> +    while ($this_condition and $that_condition and $some_other_condition
>> +           and $this_really_really_really_long_condition)
>> +    {
>> +        # do something
>> +    }
>> +
>> +p) Do things the most readable way. For instance:
>> +
>> +    open(FOO, $foo) or 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.
>> +
>> +q) Just because an operator lets you assume default arguments doesn't 
>> mean
>> +that you should always use them. The defaults are there for lazy 
>> programmers
>> +writing one-shot, non-shared programs. If you want your program to be 
>> readable,
>> +consider supplying the argument.
>> +
>> +r) Choose mnemonic identifiers. That is, don't name your variables 
>> $h, $c
>> +and $w. Try $hostaddress, $critical and $warning instead ($host, 
>> $crit and
>> +$warn is OK too).
>> +
>> +s) Use underscore to split words in long identifiers. That is, use
>> +$service_port instead of $ServicePort as the former is much more 
>> readable.
>> +
>> +*) Always check the return code of system calls.
> 
> 

-- 
Andreas Ericsson                   andreas.ericsson at op5.se
OP5 AB                             www.op5.se
Lead Developer




More information about the Devel mailing list