develooper Front page | perl.perl6.internals | Postings from July 2001

Final tweaks: PDD Conventions and Guidelines for Perl Source Code

From:
Dave Mitchell
Date:
July 31, 2001 04:48
Subject:
Final tweaks: PDD Conventions and Guidelines for Perl Source Code
Message ID:
200107311147.MAA14463@gizmo.fdgroup.co.uk
Back in the mists of time (May 29th), I solicited comments on my second
draft of the deeply thrilling "Conventions and Guidelines for Perl
Source Code". There were various contributions, but having more interesting
things to do [watching paint dry etc - Ed], I never got round to incorporating
them. Here's a quick summary of what I think passed for a consensus; if
if no one has any violent last-minute objections, I'll add these to the
final doc.


* indentation should consist only of spaces (no tabs).

* tabs elsewhere should be assumed to expand on an 8-char boundary.

* internal data types and their utility functions 
(*especially* for strings) should be used over a bare char * whenever 
possible. Ideally there should be no char * in the source anywhere,
and no use of C's standard string library.

* add the appropriate magic at the bottom of each src file to make emacs,
vim etc Do The Right Thing indent-wise ???? - (this was suggested but not
discussed)
[ Russ - you offered to provide the incantations ... ]

Extra 'should' style guidelines [Hugo]
- binary operators should have a space on either side;
- parentheses should not have space immediately after the opening paren
  nor immediately before the closing paren
- commas should have space after but not before
.. giving:
  x = (a + b) * f(c, d / e);
  
-  long lines should be split *before* an operator so that it is immediately
obvious when scanning the LHS of the code that this has happened - and 2
extra levels of indent should be used.
- and/or split on matching parens, with the content on separate line(s) and
with one extra indent:

    do_arbitrary_function(
        list_of_parameters_with_long_names, or_complex_subexpression(
            of_more_params, or_expresssions + 1
        )
   );


- portability:

* Dont assume GNU C, and dont use any GNU extensions unless protected by
#ifdefs for non-GNU-C builds.




nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About