Mercurial > pylearn
view doc/v2_planning/API_coding_style.txt @ 1145:d6d73a9f07b8
API_coding_style: Started to work on official guidelines
author | Olivier Delalleau <delallea@iro> |
---|---|
date | Thu, 16 Sep 2010 16:11:26 -0400 |
parents | fa1715e759e3 |
children | f6011a2aff0b |
line wrap: on
line source
========================= Coding Style Guidelines ========================= Main Goals ========== * Code should be compatible with Python 2.4 and above (using 2to3 for conversion to Python 3.x). This may not be possible in the short term for code dependent on Theano. * Code should be easy to read, understand and update by developers and users. * Code should be well-documented and well-tested. Code Sample =========== The following code sample illustrates many of the coding guidelines one should follow in Pylearn. .. code-block:: python import os, sys, time Python Coding Guidelines ======================== Official Guidelines ------------------- Source Material ~~~~~~~~~~~~~~~ The three main documents describing our Python coding guidelines are: * `PEP 8 -- Style Guide for Python Code <http://www.python.org/dev/peps/pep-0008>`_ * `PEP 257 -- Docstring Conventions <http://www.python.org/dev/peps/pep-0257>`_ * `Google Python Style Guide <http://google-styleguide.googlecode.com/svn/trunk/pyguide.html>`_ However, there are a few points mentioned in those documents that we decided to do differently: * Use only one space (not two) after a sentence-ending period in comments. Excerpts ~~~~~~~~ We emphasize here a few important topics that are found in the official guidelines: Additional Recommendations -------------------------- Things you should do even if they are not listed in official guidelines: * Avoid backslashes whenever possible. They make it more difficult to edit code, and they are ugly (as well as potentially dangerous if there are trailing white spaces). .. code-block:: python # Good. if (cond_1 and cond_2 and cond_3): ... # Bad. if cond_1 and \ cond_2 and \ cond_3: ... * When indenting multi-line statements like lists or function arguments, keep elements of the same level aligned with each other. The position of the first element (on the same line or a new line) should be chosen depending on what is easiest to read (sometimes both can be ok). .. code-block:: python # Good. for my_very_long_variable_name in [my_food, my_bar, my_love, my_everything]: ... for my_very_long_variable_name in [ my_foo, my_bar, my_love, my_everything]: ... # Good iff the list needs to be frequently updated. for my_very_long_variable_name in [ my_foo, my_bar, my_love, my_everything, ]: ... # Bad. for my_very_long_variable_name in [my_foo, my_bar, my_love, my_everything]: ... for my_very_long_variable_name in [my_foo, my_bar, my_love, my_everything]: ...