Skip to content

Commit

Permalink
Merge branch 'tz/perl-styles'
Browse files Browse the repository at this point in the history
Add coding guidelines for writing Perl scripts for Git.

* tz/perl-styles:
  Update CodingGuidelines for Perl
  • Loading branch information
Junio C Hamano committed Feb 14, 2013
2 parents d3354cd + c5e366b commit 07203d6
Showing 1 changed file with 42 additions and 0 deletions.
42 changes: 42 additions & 0 deletions Documentation/CodingGuidelines
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ code. For Git in general, three rough rules are:
judgement call, the decision based more on real world
constraints people face than what the paper standard says.

Make your code readable and sensible, and don't try to be clever.

As for more concrete guidelines, just imitate the existing code
(this is a good guideline, no matter which project you are
Expand Down Expand Up @@ -179,6 +180,47 @@ For C programs:
- Use Git's gettext wrappers to make the user interface
translatable. See "Marking strings for translation" in po/README.

For Perl programs:

- Most of the C guidelines above apply.

- We try to support Perl 5.8 and later ("use Perl 5.008").

- use strict and use warnings are strongly preferred.

- Don't overuse statement modifiers unless using them makes the
result easier to follow.

... do something ...
do_this() unless (condition);
... do something else ...

is more readable than:

... do something ...
unless (condition) {
do_this();
}
... do something else ...

*only* when the condition is so rare that do_this() will be almost
always called.

- We try to avoid assignments inside "if ()" conditions.

- Learn and use Git.pm if you need that functionality.

- For Emacs, it's useful to put the following in
GIT_CHECKOUT/.dir-locals.el, assuming you use cperl-mode:

;; note the first part is useful for C editing, too
((nil . ((indent-tabs-mode . t)
(tab-width . 8)
(fill-column . 80)))
(cperl-mode . ((cperl-indent-level . 8)
(cperl-extra-newline-before-brace . nil)
(cperl-merge-trailing-else . t))))

For Python scripts:

- We follow PEP-8 (http://www.python.org/dev/peps/pep-0008/).
Expand Down

0 comments on commit 07203d6

Please sign in to comment.