promogest/lineeguida

Linee guida per la scrittura di codice aggiuntivo per il Promogest

Affinchè si possa mantenere una certa coerenza stilistica, e affinchè il Team di sviluppo del Promogest possa (in tempi molto brevi) rendere parte integrante del Promogest, aggiunte sviluppate dalla comunità, devono assolutamente essere rispettate alcune regole di codifica:

  • commenti al codice (possibilmente in inglese)
  • evitare stravolgimenti della direzione di sviluppo presa dal Team

La guida generale a cui sono ispirate le seguenti regole e` la  PEP-8 resa pubblica sul sito ufficiale di python.

Nomeclatura:

class MiaClasse(object): pass

def la_mia_funzione_o_metodo(arg): pass

def myFactoryFunction():
    class Foo(object):
        pass
    return Foo

variabile = 42
variabile_lunga_name = 'Spam'

Indendazione e Lunghezza Linee

  • Indentazione con 4 spazi;
  • Assolutamente niente Tabs (da nessuna parte)
  • Codifica utf-8
  • Lunghezza massima linea: 90 caratteri

Usa le parentesi per ridurre i "\":

if some_variable == other_variable and my_variable > your_variable:
    print 'Wohooo'
elif ((some_variable == my_variable and other_variable < your_variable) or
      some_variable == your_variable):
    print 'Wicked'

Spaziatura

  • Niente spazi prima o dopo le parentesi, uno spazio tra gli argomenti: foo(x, y)
  • Uno spazio attorno a = negli assegnamenti: variabile = x
  • Uno spazio attorno agli operatori: somma = a + b
  • Una riga vuote dopo la definizione di una classe o una funzione di alto livello
  • Una riga vuota dopo le docstring per le classi
  • Una riga vuota tra i metodi di una classe, se non sono veramente corti

Docstrings

Le classi e le funzioni di alto livello devono avere le docstring; I metodi devono averla solo se il funzionamento non puo` essere riconosciuto ad una semplice occhiata.

class MyClass(object):

"""
This is a docstring for a class
"""

variable = 'value'

# Questo e` un commento
# su piu` linee.
variable = 'value' + 'value2'