remove source-dist branch
This commit is contained in:
		
						commit
						27dcec3fa7
					
				
					 416 changed files with 128456 additions and 0 deletions
				
			
		
							
								
								
									
										116
									
								
								CODING
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								CODING
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,116 @@
 | 
			
		|||
The following guidelines are intended to aid programmers in creating
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
1. C Language Programming
 | 
			
		||||
 | 
			
		||||
All code should comply with the requirements of the Free Software
 | 
			
		||||
Foundation Coding standards (which are currently available at
 | 
			
		||||
http://www.gnu.org/prep/standards_toc.html). We also follow most of
 | 
			
		||||
the FSF guidelines. Developers may suggest deviations from the FSF
 | 
			
		||||
style recommendations, which will be considered by open discussion on
 | 
			
		||||
the nagiosplug-devel mailing list. Any such deviations will apply to
 | 
			
		||||
the entire code base to ensure consistency.
 | 
			
		||||
 | 
			
		||||
Currently, the exceptions to FSF recommendations are roughly equivalent
 | 
			
		||||
to GNU indent with invoked as 'indent -ts 2 -br'. Specifically, the
 | 
			
		||||
exceptions are as follows:
 | 
			
		||||
 | 
			
		||||
a) leading white space for a statement should be formatted as tabs,
 | 
			
		||||
with one tab for each code indentation level.
 | 
			
		||||
 | 
			
		||||
b) in statement continuation lines, format whitespace up to the column
 | 
			
		||||
starting the statement as tabs, format the rest as spaces (this
 | 
			
		||||
results in code that is legible regardless of tab-width setting).
 | 
			
		||||
 | 
			
		||||
c) with the exception of the above, tabs should generally be avoided
 | 
			
		||||
 | 
			
		||||
d) when tab width is 2 spaces, line-length should not exceed 80
 | 
			
		||||
characters
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
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.
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue